2015-04-20 6 views
8

Ich habe eine einfache json Nachricht mit einigen Feldern und möchte es zu einem Java-Objekt mit spring-web zuordnen.Wie werden JSON-Felder benutzerdefinierten Objekteigenschaften zugeordnet?

Problem: Meine Zielklassenfelder werden anders als in der JSON-Antwort benannt. Wie kann ich sie trotzdem dem Objekt zuordnen, ohne die Felder in Java umbenennen zu müssen?

Gibt es eine Anmerkung, die hier platziert werden könnte?

{ 
    "message":"ok" 
} 

public class JsonEntity { 
    //how to map the "message" json to this property? 
    private String value; 
} 

RestTemplate rest = new RestTemplate(); 
rest.getForObject(url, JsonEntity.class); 
+3

'@ JsonProperty' ist was Sie suchen. –

Antwort

8

Um eine JSON-Eigenschaft auf ein Java-Objekt mit einem anderen Namen verwendet Karte @JsonProperty annotation, und Ihr Code wird sein:

public class JsonEntity { 
    @JsonProperty(value="message") 
    private String value; 
} 
2

Try this:

@JsonProperty("message") 
private String value; 
1

Bei Sie vertraut es, Sie können auch Jaxb-Annotationen verwenden Marshall/Unmarshale Json mit Jackson

@XmlRootElement 
public class JsonEntity { 
    @XmlElement(name = "message") 
    private String value; 
} 

Aber Sie müssen Ihre Jackson Kontext Property initialisieren. Hier ein Beispiel, wie man den Jackson-Kontext mit Jaxb-Annotationen initialisiert.

ObjectMapper mapper = new ObjectMapper(); 

AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(); 
mapper.getDeserializationConfig().setAnnotationIntrospector(introspector); 
mapper.getSerializationConfig().setAnnotationIntrospector(introspector);