निम्नलिखित जाक्स-बी एनोटेशन के लिए जैक्सन जेसन एनोटेशन में समतुल्य तरीका क्या है?JSON फ़ील्ड नामों को विभिन्न ऑब्जेक्ट फ़ील्ड नामों पर कैसे मैप करें?
मुझे एक्सएमएल की बजाय जेसन का उत्पादन करने की आवश्यकता है और पारंपरिक जैक्सन एनोटेशन को जानने की जरूरत है जो जैक्स-बी में समान रूप से दर्शाया गया है।
- एक फ़ील्ड का नाम बदलें।
- फ़ील्ड के बजाय गेटर्स का उपयोग करें।
इन सुविधाओं आदि विशेष रूप से महत्वपूर्ण है, तो JSON/XML तत्व नाम की तरह "new
", "public
" एक जावा आरक्षित शब्द है कर रहे हैं "static
",
तो हम नाम के लिए है पीओजेओ फ़ील्ड्स "_new_", "_public_", "_static_", आदि क्रमशः
लेकिन उन्हें "नया", "सार्वजनिक", "स्थैतिक", आदि में नाम बदलने के लिए जैक्स-बी एनोटेशन का उपयोग करें जेनरेट एक्सएमएल (और जेसन) तत्व।
संपत्ति गेटर का उपयोग कर (मुझे लगता है कि यह है कि यह कैसे JAX-ख में किया जाता है)
@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_;}
}
करता है '@XmlElement (नाम =" नया ")' आपके लिए काम नहीं? मैंने बस जर्सी सर्वलेट (जो जैक्सन का उपयोग करता है) पर कोशिश की और यह ठीक काम किया। – Danny
मैं RestyGWT का उपयोग कर रहा हूं - मुझे लगता है कि यह सुविधा RestyGWT में नहीं मिली है और इसलिए मुझे पैच सबमिट करने/प्रस्तावित करने से पहले जैक्सन इक्विव को जानने की आवश्यकता है। संकेत के लिए –
धन्यवाद @ बेस्डगेक। Http://wiki.fasterxml.com/AnnotationIntrospector पर अधिक जानकारी मिल सकती है लिंक के तरीके में थोड़ा सा पुराना है, मैं इस कोड का उपयोग serializer/deserializer की प्राथमिकता को सेट करने के लिए कर रहा हूं। objectMapper.setAnnotationIntrospector ( नई AnnotationIntrospectorPair ( नई JacksonAnnotationIntrospector(), नई JaxbAnnotationIntrospector() ) ); – aheryan