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?

Était-ce utile?

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
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top