Mit der Jackson-JSON-Generator, wie kann ich schreiben, mehrere Objekte auf einem Feld?

Angenommen ich habe die folgenden drei Klassen (get-und Set-Methoden weggelassen aus Platzgründen):

@JsonAutoDetect
public class InfoCollection{
    private InfoType1 info1;
    private InfoType2 info2;
}

@JsonAutoDetect
public class InfoType1{
    private String fieldA;
}

@JsonAutoDetect
public class InfoType2{
    private String fieldB;
}

I"m versuchen, zu schreiben JsonSerializer.serialize() Funktion serialisiert ein InfoCollection Objekt in diesem format:

{
    "allInfo":{
        "fieldA":"foo",
        "fieldB":"bar"
    }
}

Dies ist, was ich jetzt habe:

jsonGenerator.writeStartObject();
jsonGenerator.writeFieldName("allInfo");
jsonGenerator.writeObject(myInfoCollection.getInfo1());
jsonGenerator.writeObject(myInfoCollection.getInfo2());
jsonGenerator.writeEndObject();

die Ursache der folgenden Ausnahme:

 org.codehaus.jackson.JsonGenerationException: Can not start an object, expecting field name

Bin ich etwas fehlt kleine oder bin ich Total über dieses der falsche Weg ist?

HINWEIS: EIN paar von den vorgeschlagenen Lösungen so weit mit schreiben jedes einzelne Feld der InfoType1 und InfoType2. Ich bin auf der Suche nach einer Lösung, die nicht erforderlich ist dies, da würd ich gern die Lösung, die auf große Klassen mit vielen Feldern.

InformationsquelleAutor CFL_Jeff | 2013-02-12

Schreibe einen Kommentar