java - tutorial - para que se usa elastic search
¿Cómo asignar nombres de campo JSON a diferentes nombres de campo de objeto? (2)
Con algún ejemplo, también puede usar en el getter y setter para cambiar el nombre a un campo diferente
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; } }
¿Cuál es la forma equivalente en la anotación de Jackson json para las siguientes anotaciones de jax-b?
Necesito producir json en lugar de xml y necesito conocer las anotaciones de jackson convencionales que se denotan de manera equivalente en jax-b.
- renombrar un campo
- utilizar getters en lugar de campos.
Estas características son especialmente importantes si el nombre del elemento json / xml es una palabra reservada de java como " new
", " public
", " static
", etc.
Para que tengamos que nombrar los campos POJO como "_new_", "_public_", "_static_", etc, respectivamente,
pero use la anotación jax-b para renombrarlos a "nuevo", "público", "estático", etc. en los elementos XML (y json) generados.
Renombrando 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 al uso del captador de propiedades (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 sea un poco tarde pero de todos modos ..
Puedes renombrar una propiedad simplemente agregando
@JsonProperty("contractor")
Y de forma predeterminada, Jackson utiliza el getter y el setter para serializar y deserializar.
Para obtener información más detallada: http://wiki.fasterxml.com/JacksonFAQ