2010-07-01 14 views
5

मैं propperly त्रुटि मैं नहीं समझ सकता से बाहर java.lang.Class के कहने deserialize नहीं कर सकते जब मैं इस कोड चलाएँ:टोकन START_OBJECT

InputStream is = this.getClass().getClassLoader().getResourceAsStream(filename); 
String jsonTxt = IOUtils.toString(is); 
JSONArray json = (JSONArray) JSONSerializer.toJSON(jsonTxt); 
JSONObject metadatacontent = json.getJSONObject(0); 
ObjectMapper mapper = new ObjectMapper(); 
mapper.readValue(metadatacontent.toString(), MetadataContentBean.class.getClass()); 

त्रुटि:

org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.lang.Class out of START_OBJECT token at [Source: [email protected]; line: 1, column: 1] at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:159) at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:192) at org.codehaus.jackson.map.deser.StdDeserializer$ClassDeserializer.deserialize(StdDeserializer.java:439) at org.codehaus.jackson.map.deser.StdDeserializer$ClassDeserializer.deserialize(StdDeserializer.java:421) at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:1588) at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1116) at com.path.parser.JSon.Parser(JSon.java:65) at com.path.parser.JSon.main(JSon.java:29)

क्या क्या इसका मतलब यह कि??

शायद अगर मुझे यह पता है, तो मुझे अपनी त्रुटि मिल सकती है।

उत्तर

10

आपकी समस्या अंतिम पंक्ति है:

MetadataContentBean.class.getClass() 

इसका मतलब यह है "मुझे MetadataContentBean वर्ग के लिए Class वस्तु मिलता है, और फिर मुझे उस Class वस्तु के लिए Class वस्तु मिल" .... यदि आप देखते हैं मेरा मतलब। तो आप जैक्सन से अपने JSON को Class ऑब्जेक्ट पर deserialize करने के लिए कह रहे हैं, जो यह नहीं जानता कि कैसे करना है।

यह होना चाहिए सिर्फ

MetadataContentBean.class 
+0

धन्यवाद, यह समस्या थी, लेकिन फिर भी मैं जानना चाहता हूं कि त्रुटि का अर्थ क्या है !! फिर से धन्यवाद –

4

यह शायद अन्य प्रश्न से संबंधित है, लेकिन इस सवाल का जवाब पूरा करने के लिए बस, त्रुटि विसंगति से आता है: प्रकार "java.lang.Class" JSON स्ट्रिंग के रूप धारावाहिक है (वर्ग का नाम स्वयं), और बीन्स की तरह JSON ऑब्जेक्ट के रूप में नहीं है। तो deserializer एक JSON स्ट्रिंग को देखने की अपेक्षा करता है, इसके बजाय एक JSON ऑब्जेक्ट (जो START_OBJECT से शुरू होता है) देखता है और अपवाद फेंकता है।

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