Manipulation Propriétés JSON inconnu avec Jackson
Question
Pour désérialisation JSON avec le champ inconnu dans un objet il y a @JsonAnySetter.
Mais si je lis ce JSON dans mon objet, modifier certains champs connus et écrire de nouveau à JSON? Les propriétés inconnues seront perdues.
Comment puis-je gérer de tels cas? Est-il possible de cartographier un objet ou dois-je lire les données dans un JsonNode ou une carte?
La solution
unmarshalling dans une classe java personnalisée a ses avantages et ses inconvénients. Il est vous donne belle typage statique, mais il est bien statique. Le javadoc pour @JsonAnySetter
suggère qu'il est semblable à @XmlAnyElement
de JAXB, mais contrairement à @XmlAnyElement
, les objets de données ne contiennent pas d'informations de nommage, il est donc une rue à sens unique.
si vous avez besoin pour gérer les flux JSON dynamiques, alors vous devez mordre la Map
balle et de l'utilisation ou JsonNode
.
Autres conseils
Il y a ce RFE pour Jackson: http://jira.codehaus.org/browse/JACKSON -292 pour ajouter une telle fonctionnalité. Est logique totale quand on y pense.
Il est maintenant possible d'utiliser @JsonAnyGetter
pour fournir une méthode qui permet sérialisation des propriétés dynamiques:
@JsonAnyGetter
public Map<String, String> getDynamicProperties() {
return dynamicProperties; // a field like this exists
}