Intereting Posts
एंड्रॉइड पुस्तकालय नहीं मिला Android में EditField के लिए इमोजी कीबोर्ड समर्थन ज़ामिनिन ज़िप एलाइंस नहीं मिला GPSTracker वर्ग काम नहीं कर रहा है रिलेटिव लेआउट में TextView क्षैतिज केंद्र ADB का उपयोग करके डिवाइस ब्लूटूथ मैक पता ढूंढें फ्रैगमेंट्स के बीच संचार मैपफ्रैगमेंट का मानचित्र किसी अन्य गतिविधि से लौटने के दौरान अंतराल के साथ लोड हो जाता है एक टुकड़ा से Google Play गेम सेवाओं को कॉल करना रीसाइक्लेअर व्यू की आखिरी स्थिति पर दृश्य ढूंढें? एंड्रॉइड एक्लिप्स् से उपभोक्ता सेवा मैं Monodroid में क्रियाओं के बीच वाम से सही संक्रमण से एक कड़ी चोट एनीमेशन कैसे बनाऊँ? डिस्पैच टच एंवेंट का उपयोग कैसे करें? फेसबुक ऐप आमंत्रण नापसंद किया गया है एंड्रॉइड में टाइपफेस ऑब्जेक्ट के परिवार की जाँच करें

गैर-ठोस संग्रह प्रकार के लिए deserialize नहीं मिल सकता है

मैं JSON वस्तुओं को मैप करने के लिए जैक्सन लाइब्रेरी का उपयोग कर रहा हूं। मैंने समस्या को बहुत सरल किया है, यह वही है जो होता है:

public class MyObject{ public ForeignCollection<MySecondObject> getA(){ return null; } public ForeignCollection<MyThirdObject> getB(){ return null; } } 

मैं एक खाली JSON स्ट्रिंग पार्स कर रहा हूँ:

 ObjectMapper mapper = new ObjectMapper(); mapper.readValue("{}", MyObject.class); 

readValue , मुझे यह अपवाद मिलता है:

 com.fasterxml.jackson.databind.JsonMappingException: Can not find a deserializer for non-concrete Collection type [collection type; class com.j256.ormlite.dao.ForeignCollection, contains [simple type, class com.test.MyThirdObject]] 

यह तब होता है जब मेरे पास दो MyObject क्लास में तरीके get जो एक ForeignCollection लौटाते हैं। कोई भी अपवाद नहीं get तरीकों के परिणामों को निकालना।

मुझे वास्तव में इस तथ्य से हैरान हूँ कि मैपर get तरीकों को देखता है, इसे सिर्फ उन फ़ील्ड को सेट करना चाहिए जो मैं संकेत करता हूं।

यहां क्या हो रहा है?

Solutions Collecting From Web of "गैर-ठोस संग्रह प्रकार के लिए deserialize नहीं मिल सकता है"

मैंने इसे ForeignCollection List से एक List परिवर्तित कर लिया है:

 private ForeignCollection<MyObject> myObjects; public List<MyObject> getMyObjects(){ return new ArrayList<MyObject>(myObjects); } 

आपको ForeignCollection लिए कस्टम डिसेराइलाइज़र को परिभाषित करने की आवश्यकता हो सकती है; या, यदि कार्यान्वयन वर्ग ज्ञात है, तो एनोटेशन का उपयोग करें:

 @JsonDeserialize(as=ForeignCollectionImpl.class) 

यह इंगित करने के लिए कि उस सार प्रकार के लिए कौन सी कंक्रीट सब-क्लास का उपयोग करना है