2012-12-07 18 views
12

मैं जेएसओएन फ़ाइल से पढ़ने और इसे अपने जावा ऑब्जेक्ट में बदलने के लिए ऑब्जेक्ट मैपर पर जैक्सन की रीडवेल्यू() विधि का उपयोग कर रहा हूं।जैक्सन - आवश्यक संपत्ति?

उदाहरण के लिए।

mapperObject.readValue(node, MyTargetClass.class) 

क्या कोई एनोटेशन है जिसे मैं आवश्यक गुणों को लागू करने के लिए MyTargetClass पर सेट कर सकता हूं? उदाहरण के लिए, अगर मैं के साथ गुण एबीसी, DEF और GHI, और मेरे Json एक JSON वस्तु है निम्नलिखित

{ 
    "ABC" : "somevalue" 
    "DEF" : "someothervalue" 
} 

है मैं इसे किसी भी तरह विफल है, और केवल readValue पर सफल अगर यह एबीसी, DEF और निहित चाहते GHI।

उत्तर

12

जैक्सन में सत्यापन कार्यक्षमता शामिल नहीं है, और यह डिज़ाइन द्वारा है (यानी इसे बाहर के रूप में माना जाता है)। लेकिन आमतौर पर Bean Validation API कार्यान्वयन का उपयोग किया जाता है। इस बारे में अच्छी बात डेटा प्रारूप हैंडलिंग और सत्यापन तर्क के बीच decoupling है। यह ड्रॉपवर्कर उपयोग जैसे ढांचे हैं; और यह दिशा जैक्स-आरएस (जर्सी की तरह) जेएक्स-आरएस 2.0 के लिए चीजें ले रही है।

-4

Google की जीएसओएन लाइब्रेरी आपकी आवश्यकताओं को बेहतर ढंग से पूरा करेगी। लेकिन इसकी विपरीत आवश्यकता है: आपको सख्ती से सभी संरचनाओं को परिभाषित करना चाहिए।

+0

जीएसओएन में यह कार्यक्षमता भी नहीं है। Https://code.google.com/p/google-gson/issues/detail?id=61 – Dmitry

8

आप @JsonProperty(required = true) एनोटेशन के साथ आवश्यक संपत्ति को चिह्नित कर सकते हैं, और यदि संपत्ति गुम या शून्य है तो यह deserialization के दौरान एक जेसन मैपिंग अपवाद फेंक देगा।

संपादित करें: मुझे टिप्पणी के बिना इसके लिए एक डाउनवोट प्राप्त हुआ। मुझे यह जानना अच्छा लगेगा, क्योंकि यह बिल्कुल सही काम करता है।

+0

हैलो देखें। शायद क्योंकि यह अभी तक काम नहीं करता है। देखें: http://stackoverflow.com/questions/18320731/jackson-jsonpropertyrequired-true-doesnt-throw-an-exception –

+1

@ गुनीथदेवेंद्रेंद्र यह जैक्सन के हाल के संस्करणों में काम करता है। – postfuturist

+0

मैं 2.6.5 का उपयोग कर रहा हूं और यह काम नहीं करता है :( –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^