Qual è il modo equivoco nell'annotazione di Jackson Json per le seguenti annotazioni jax-b?Come associare i nomi dei campi JSON a nomi di campi di oggetti diversi?
Ho bisogno di produrre json piuttosto che xml e ho bisogno di conoscere le annotazioni di jackson convenzionali che sono equivalentemente denotate in jax-b.
- rinomina un campo.
- utilizza i getter invece dei campi.
Queste caratteristiche sono particolarmente cruciale se il nome dell'elemento JSON/XML è una parola java riservata come "new
", "public
", "static
", ecc
In modo che abbiamo di nominare il Campi POJO come "_new_", "_public_", "_static_", ecc, rispettivamente
ma utilizzare l'annotazione jax-b per rinominarli in "nuovo", "pubblico", "statico", ecc. in generato elementi XML (e json).
Rinominare 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_ ;
}
Redirect da utilizzando la proprietà getter (credo che questo è il modo si è fatto in 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_;}
}
fa '@XmlElement (name = "new")' non funzionare per voi? Ho appena provato su un servlet di Jersey (che usa Jackson) e ha funzionato bene. – Danny
Sto usando RestyGWT - Penso che la funzione non sia stata trovata in RestyGWT e quindi ho bisogno di conoscere il jackson equiv prima di provare/proporre di inviare una patch. –
Grazie a @BlessedGeek per il suggerimento. Maggiori informazioni possono essere trovate su http://wiki.fasterxml.com/AnnotationIntrospector Nonostante il metodo nel collegamento sia un po 'vecchio, sto usando questo codice per impostare la priorità del serializzatore/deserializzatore. objectMapper.setAnnotationIntrospector ( nuova AnnotationIntrospectorPair ( nuova JacksonAnnotationIntrospector(), nuova JaxbAnnotationIntrospector() ) ); – aheryan