¿Cuál es la forma equiv en la anotación Jackson json para las siguientes anotaciones jax-b?¿Cómo asignar nombres de campo JSON a diferentes nombres de campos de objetos?
Necesito producir json en vez de xml y necesito saber las anotaciones de jackson convencionales que se indican de forma equivalente en jax-b.
- cambie el nombre de un campo.
- use getters en lugar de campos.
Estas características son especialmente crucial si el nombre del elemento JSON/XML es una palabra reservada de Java como "new
", "public
", "static
", etc.
Así que tenemos que nombrar la campos POJO como "_static_" "_public_" "_new_",,, etc, respectivamente,
pero el uso JAX-b anotación para cambiar el nombre de nuevo a "nuevo", "público", "estática", etc. en el 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_ ;
}
redirección a la utilización de propiedad de captador (creo que esto es lo que 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_;}
}
¿El '@XmlElement (name = "nueva")' no funcionar para usted? Acabo de probarlo en un servlet de Jersey (que usa Jackson) y funcionó bien. – Danny
Estoy usando RestyGWT - Creo que la función no se encuentra en RestyGWT y, por lo tanto, necesito saber el equivalente de jackson antes de intentar/proponer enviar un parche. –
Gracias @BlessedGeek por la pista. Se puede encontrar más información en http://wiki.fasterxml.com/AnnotationIntrospector A pesar de que el método en el enlace es un poco viejo, estoy usando este código para establecer la prioridad del serializador/deserializador. objectMapper.setAnnotationIntrospector ( nuevo AnnotationIntrospectorPair ( nuevo JacksonAnnotationIntrospector(), nuevo JaxbAnnotationIntrospector() ) ); – aheryan