Lesen Sie das eingebettete Objekt in Jackson
Ich versuche zu Lesen ein Vermächtnis JSON-code mit Jackson 2.0-RC3, aber ich bin stecken mit einem "embedded" - Objekt.
Gegeben, die folgende JSON:
{
"title": "Hello world!",
"date": "2012-02-02 12:23:34".
"author": "username",
"author_avatar": "http://.../",
"author_group": 123,
"author_prop": "value"
}
Wie kann ich anzeigen in die folgende Struktur:
class Author {
@JsonPropery("author")
private String name;
@JsonPropery("author_avatar")
private URL avatar;
@JsonProperty("author_group")
private Integer group;
...
}
class Item {
private String title;
@JsonProperty("date")
private Date createdAt;
//How to map this?
private Author author;
}
Ich versuche zu tun, dass mit @JsonDeserialize
aber es scheint, dass ich die Karte der gesamten Item
Objekt Weg.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Umgang mit einem "eingebetteten" Objekt, das Sie verwenden sollten
@JsonUnwrapped
— es ist ein äquivalent der Ruhezustand ist@Embeddable
/@Embedded
.Ich würde Deserialisieren der ursprüngliche JSON zu einem einzigen, flachen Objekt zuerst (eine Art adapter), dann erstellen Sie Ihre eigenen domain-Objekte.
Dann verwenden Sie dieses Objekt, um füllen Sie Ihren Artikel und Autor von Objekten und erstellen Sie die richtigen Beziehungen.
Ihre
Item
Klasse könnte nur sein, automatisch deserialisiert von die folgende form:Könnten Sie in der Lage sein, etwas zu tun mit benutzerdefinierten Deserialisierung, aber es wäre nicht die einfachere Lösung für Sie sicher.
@Embeddable
/@Embedded
.Hinweis: ich bin der EclipseLink JAXB (MOXy) führen und ein Mitglied der JAXB 2 (JSR-222) expert group.
Ich bin mir nicht sicher, ob Jackson die diesen Anwendungsfall unterstützt, aber unten ist ein Beispiel, wie Sie nutzen können, MOXy s
@XmlPath
Erweiterung Ihre Anforderungen zu erfüllen. Hinweis: Sie benötigen ein EclipseLink 2.4.0 nächtlichen label ab 7. April 2012 oder neuer.Element
Den
author
Eigenschaft aufItem
zugeordnet ist@XmlPath('.')
. Dies bedeutet, dass der InhaltAuthor
zog bis zu der gleichen Ebene wie der Inhalt fürItem
. Ich musste auch die Verwendung einesXmlAdapter
für dieDate
Eigenschaft, wie das format Sie verwenden, nicht übereinstimmen, MOXy s-Standard-Darstellung.Autor
DateAdapter
jaxb.Eigenschaften
Einer Datei namens
jaxb.properties
mit der folgende Eintrag platziert werden muss im gleichen package wie die domain-Klassen, die angeben, MOXy als JAXB (JSR-222) Anbieter.Eingang.json/Ausgabe
Weitere Informationen