2015-04-20 3 views
8

मेरे पास कुछ फ़ील्ड के साथ एक साधारण json संदेश है, और spring-web का उपयोग कर इसे जावा ऑब्जेक्ट में मैप करना चाहते हैं।कस्टम ऑब्जेक्ट गुणों के लिए JSON फ़ील्ड को कैसे मैप करें?

समस्या: मेरे लक्ष्य वर्ग फ़ील्ड को जेसन प्रतिक्रिया के मुकाबले अलग-अलग नाम दिया गया है। जावा में खेतों का नाम बदलने के बिना मैं उन्हें किसी भी तरह ऑब्जेक्ट पर कैसे मैप कर सकता हूं?

क्या कोई टिप्पणी है जिसे यहां रखा जा सकता है?

{ 
    "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

'@ जेसनप्रोपर्टी 'जो आप खोज रहे हैं। –

उत्तर

8

एक अलग नाम उपयोग @JsonProperty annotation के साथ एक जावा वस्तु के लिए एक JSON संपत्ति नक़्शा बनाने के लिए, और अपने कोड होगा:

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

इस प्रयास करें:

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

मामले में आप इसे परिचित करते हैं, आप जाक्सल एनोटेशन का उपयोग जैक्सल

का उपयोग कर मार्शल/अनमारशाल जेसन को भी कर सकते हैं।
@XmlRootElement 
public class JsonEntity { 
    @XmlElement(name = "message") 
    private String value; 
} 

लेकिन आपको अपने जैक्सन संदर्भ प्रोपरी को प्रारंभ करना होगा। जैक्सब एनोटेशन के साथ जैक्सन संदर्भ को प्रारंभ करने का उदाहरण यहां दिया गया है।

ObjectMapper mapper = new ObjectMapper(); 

AnnotationIntrospector introspector = new JaxbAnnotationIntrospector(); 
mapper.getDeserializationConfig().setAnnotationIntrospector(introspector); 
mapper.getSerializationConfig().setAnnotationIntrospector(introspector); 
संबंधित मुद्दे