2017-04-25 3 views
0

so dass ich ein Item-Klasse haben, die wie folgt aussieht (Extramaterial ausgeschlossen):Jackson Serialisierung Objekt als String

{ 
"id": 1, 
"item": "something", 
"account": { 
    "id": 5, 
    "name": "somename" 
     } 
} 

Ich möchte der Eigentümer Hahn zum Beispiel erscheinen wie diese

{ 
"id": 1, 
"item": "something", 
"account": "somename" 
} 

I weiß, wie man das macht, indem man den Weg ändert, wie Item in Jackson serialisiert wird. Wenn ich jedoch die Art und Weise ändern soll, wie ich Item serialisiere, muss ich alle zusätzlichen Felder hinzufügen, auch Item ist eine Basisklasse, also muss ich tun etwas mit all den Kinderklassen auch, das ist zu viel Arbeit (oder ist es, weiß nicht, ob jemand ein eas hat y Lösung, wie man nur ein Feld serialisiert und den ganzen Rest einschließt). Also meine Frage ist, kann ich nur die Account-Klasse serialisieren und es eine einfache Zeichenfolge zurückgeben (kein JSON-Objekt oder etwas ähnliches). Ich habe versucht, arbeiten rund um die JsonGenerator es ähnlich aussehen, aber das Beste, was ich habe bisher ist:

{ 
"id": 1, 
"item": "something", 
"account": {"account":"somename"} 
} 

Dank!

+1

Teilen Sie Ihren Code, jede Änderung vorschlagen –

+0

Check diese ans wenn Werke für Sie ... http://stackoverflow.com/questions/43200410/ how-to-write-nested-json-using-jackson/43202327 # 43202327 –

Antwort

0

Scratch, ich habe meinen Fehler gefunden, dass ich immer mit begann: jsonGenerator.writeStartObject(); und endete mit: jsonGenerator.writeEndObject(); die es selbst ein Objekt zurückgegeben hat. Alles, was ich tun musste, ist nur die writeString-Methode.

0

Ich denke, was Sie wollen, ist @JsonIdentityInfo von Jackson.

Mit dieser Annotation können Sie angeben, wie eine untergeordnete Entität in einer übergeordneten Entität serialisiert wird. Hier

ein Beispiel:

@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="productDescription") 
@JsonIdentityReference(alwaysAsId=true) // otherwise first ref as POJO, others as id 
private Product product; 

Dies sagt Jackson, dass das Produkt Bean serialisiert werden soll seine „product“ Feld.

Sie können auch dieses Tutorial überprüfen:

http://www.baeldung.com/jackson-annotations

Verwandte Themen