converting json to java object giving wrong type of enum -


मेरे पास एक जेसन है जो निम्नलिखित जैसा है:

 [{"type": "chair" , "आकार": "अंडाकार", "मालिक": ["बी", "रंग": "लाल", "मालिक": ["ए", "बी"]}, {"प्रकार": "फूलदान" "सी"]}]  

जैसा कि देखा गया है, दोनों प्रविष्टियां अलग-अलग हैं इसलिए मुझे इस जेसन को डिसेरीलाइज़ करना होगा और 2 ऑब्जेक्ट्स चेयर और फूलदान देना होगा। उपरोक्त मालिकों को उपयुक्त वस्तु में एन्यूम की सूची होना चाहिए। Json के पास अन्य कई अलग-अलग प्रविष्टियां हो सकती हैं, जैसे और किसी भी क्रम में। इसलिए मैं यह कर रहा हूं:

  सूची & lt; मानचित्र & lt; स्ट्रिंग, ऑब्जेक्ट & gt; & gt; Things = objectMapper.readValue (जेसन, ऑब्जेक्टमैपर .getTypeFactory ()। कंसोल कलेक्शन टाइप (लिस्ट। क्लास, मैप। क्लास));   

चीजों को नक्शे की सूची है और प्रत्येक नक्शे एक चीज़ के अनुरूप होगा। मैं सूची पर पुनरावृत्त करता हूं और प्रत्येक मानचित्र से 'प्रकार' को चेक करता हूं और उचित ऑब्जेक्ट को इन्स्तांत करता हूं। उदाहरण: map.get ("type") == "कुर्सी", तो नए चेयर (map.get ("color"), map.get ("मालिक"));

अब मेरे पास एक enum मालिक हैं I इसलिए मैं यह करता हूं:

  सूची & amp; o; owers & gt; मालिक = (ArrayList & lt; OWNERS & gt;) map.get ("स्वामी");   

मुझे सूची ठीक से मिलती है लेकिन जब मैं इसकी पुष्टि करता हूं:

  assertEquals (OWNERS.A, owners.get (0));   

मुझे त्रुटि मिलती है: 'java.lang.OWNERS ("ए") की उम्मीद है, लेकिन java.lang.String मिला ("ए")'

जैसा कि आप कर सकते हैं मालिकों का प्रकार सूची है देखें मैं क्या खो रहा हूँ? क्या मैं गलत तरीके से पार्स कर रहा हूं?

इसे आज़माएं

  assertEquals OWNERS.A.toString (), मालिकों। (0)) प्राप्त करें;   

इसके अलावा, यह पंक्ति <पूर्व> सूची & lt; OWNERS & gt; मालिक = (ArrayList & lt; OWNERS & gt;) map.get ("स्वामी");

प्रकार विलोपन के कारण रनटाइम का काम करता है। यदि आप सूची के एक तत्व को पढ़ने की कोशिश करते हैं और इसे ओवर्स में डाल देते हैं, तो यह क्रैश हो जाएगा (क्योंकि यह वास्तव में तार की सूची होगी)।

चेक

Comments

Popular posts from this blog

python - Receiving "KeyError" after decoding json result from url -

Out of index C/C++ -

java - ImportError: No module named py4j.java_gateway -