Quelle est la manière équivalente dans l'annotation Jackson Json des annotations Jax-b suivantes?
J'ai besoin de produire json plutôt que xml et de connaître les annotations jackson conventionnelles notées de manière équivalente dans jax-b.
Ces fonctionnalités sont particulièrement cruciales si le nom de l’élément json/xml est un mot réservé Java comme "new
", "public
", "static
", etc.
Pour que nous devions nommer les champs POJO comme "_new_", "_public_", "_static_", etc., respectivement,
mais utilisez l'annotation jax-b pour les renommer en "nouveau", "public", "statique", etc., dans les éléments XML (et json) générés.
Renommer un champ
@XmlAccessorType(XmlAccessType.FIELD)
public class Person{
@XmlElement(required = true)
protected String name;
@XmlElement(required = true)
protected String address;
@XmlElement(name = "contractor")
protected boolean _restricted_ ;
@XmlElement(name = "new")
protected boolean _new_ ;
}
Redirige vers l'utilisation de la propriété getter (Je pense que c'est comme ça que ça se fait en jax-b)
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Person{
protected String name;
protected String address;
protected boolean _restricted_ ;
protected boolean _new_ ;
@XmlElement(required = true)
protected String getName() {return name;}
@XmlElement(required = true)
protected String getAddress() {return address;}
@XmlElement(name = "contractor")
protected boolean getRestricted() {return _restricted_;}
@XmlElement(name = "new")
protected boolean getNew(){return _new_;}
}
C'est probablement un peu tard mais de toute façon ..
vous pouvez renommer une propriété en ajoutant simplement
@JsonProperty("contractor")
Et par défaut, Jackson utilise le getter et le setter pour sérialiser et désérialiser.
Pour plus d'informations: http://wiki.fasterxml.com/JacksonFAQ
Avec certains exemples, vous pouvez également utiliser le getter et le setter pour le renommer
public class Sample {
private String fruit;
@JsonProperty("get_Apple")
public void setFruit(String fruit) {
this.fruit = fruit;
}
@JsonProperty("send_Apple")
public String getFruit() {
return fruit;
}
}
Veuillez noter que l'API JavaEE appropriée pour cela consiste à utiliser l'annotation javax.json.bind.annotation.JsonbProperty
. Bien sûr, Jackson et d'autres ne sont que quelques implémentations de l'API JSON Binding, ils vont probablement s'y conformer.