¿Cómo asignar nombres de campo JSON a diferentes nombres de campos de objetos?

¿Cuál es la forma equiv en la anotación de Jackson Json para las siguientes anotaciones jax-b?

Necesito producir json en lugar de xml y necesito saber las anotaciones de jackson convencionales que se denotan de forma equivalente en jax-b.

  1. renombrar un campo
  2. use getters en lugar de campos.

Estas características son especialmente cruciales si el nombre del elemento json / xml es una palabra reservada de Java como ” new “, ” public “, ” static “, etc.

De modo que debemos nombrar los campos POJO como “_new_”, “_public_”, “_static_”, etc., respectivamente,

pero use la anotación jax-b para cambiarles el nombre a “nuevo”, “público”, “estático”, etc. en los elementos XML (y json) generados.

Cambiar el nombre de un campo

 @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_ ; } 

Redirigir a usar getter de propiedad (creo que así es como se hace 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_;} } 

Probablemente es un poco tarde, pero de todos modos …

puede cambiar el nombre de una propiedad simplemente agregando

 @JsonProperty("contractor") 

Y, de forma predeterminada, Jackson usa getter y setter para serializar y deserializar.

Para obtener información más detallada: http://wiki.fasterxml.com/JacksonFAQ