Lire objet incorporé dans Jackson
Je suis en train de lire un héritage du code JSON à l'aide de Jackson 2.0-RC3, mais je suis coincé avec un objet "incorporé".
Donné un JSON suivants:
{
"title": "Hello world!",
"date": "2012-02-02 12:23:34".
"author": "username",
"author_avatar": "http://.../",
"author_group": 123,
"author_prop": "value"
}
Comment puis-je carte dans la structure suivante:
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;
}
J'ai essayé de le faire avec @JsonDeserialize
mais il me semble que j'aurais à la carte de toute Item
objet de cette façon.
Vous devez vous connecter pour publier un commentaire.
Pour faire face à une "incorporé" de l'objet, vous devez utiliser
@JsonUnwrapped
— c'est un équivalent de la veille prolongée est@Embeddable
/@Embedded
.Je désérialiser l'original JSON à un seul objet plat en premier (un peu comme une carte), puis de créer votre propre domaine d'objets.
Ensuite utiliser cet objet pour remplir votre Article et l'Auteur des objets et créer des relations correctes.
Votre
Item
classe ne pourrait être automatiquement désérialisé de la forme suivante:Vous pourriez être en mesure de faire quelque chose avec la coutume de la désérialisation, mais il ne serait pas la solution la plus simple pour vous.
@Embeddable
/@Embedded
.Remarque: je suis le EclipseLink JAXB (MOXy) plomb et un membre de la JAXB 2 (JSR-222) groupe d'experts.
Je ne suis pas sûr si Jackson prend en charge ce cas d'utilisation, mais ci-dessous est un exemple de la façon dont vous pouvez tirer parti de MOXy est
@XmlPath
extension pour répondre à vos exigences. Remarque: vous aurez besoin d'utiliser un EclipseLink 2.4.0 tous les soirs de l'étiquette à partir du 7 avril 2012 ou plus récent.Élément
La
author
bien surItem
est mappée avec@XmlPath('.')
. Cela signifie que le contenu deAuthor
est tiré vers le haut au même niveau que le contenu deItem
. J'ai également nécessaire d'utiliser unXmlAdapter
pour laDate
bien que le format que vous utilisez ne correspond pas MOXy par défaut de représentation.Auteur
DateAdapter
jaxb.propriétés
Un fichier appelé
jaxb.properties
avec l'entrée suivante doit être placé dans le même package que le domaine des classes de spécifier MOXy comme le JAXB (JSR-222) fournisseur.d'entrée.json/Sortie
Pour Plus D'Informations