2015-04-20 15 views
8

Bazı alanlar ile basit bir json mesajım var ve spring-web'u kullanarak bir java nesnesine eşlemek istiyorum.JSON alanlarını özel nesne özelliklerine nasıl eşlenir?

Sorun: hedef sınıfları alanlarım json yanıtından farklı olarak adlandırılmıştır. Java'daki alanları yeniden adlandırmak zorunda kalmadan onları nasıl nesneye eşleyebilirim?

Buraya yerleştirilebilecek bazı ek açıklama var mı?

@JsonProperty("message") 
private String value; 
+3

'@ JsonProperty' sizin için ne arıyorsanız. –

cevap

8

farklı bir ad kullanılması @JsonProperty annotation bir java nesneye bir JSON özelliğini haritasını çıkarmak için, ve kod olacaktır:

{ 
    "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); 
2

bu deneyin durumda

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

Tanıdık geldiyseniz, Jaxb ek açıklamalarını marshal/unmarshal json'u kullanarak Jackson

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

Ancak, Jackson içerik tasarımınızı başlatmanız gerekir. Burada, Jackson bağlamını Jaxb ek açıklamaları ile nasıl başlatacağınıza dair bir örnek.

ObjectMapper mapper = new ObjectMapper(); 

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