2010-07-01 5 views
5

ich nicht propperly den Fehler verstehen kann ich, wenn ich diesen Code ausführen:Kann nicht Instanz von java.lang.Class aus START_OBJECT deserialisieren Token

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()); 

Fehler:

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)

Was Bedeutet das??

Vielleicht wenn ich das weiß, könnte ich meinen Fehler finden.

Antwort

10

Ihr Problem ist die letzte Zeile:

MetadataContentBean.class.getClass() 

Das bedeutet, „hol mir das Class Objekt für die MetadataContentBean Klasse, und ich dann das Class Objekt für dieses Class Objekt“ .... wenn Sie sehen, was ich meine. Sie bitten Jackson, Ihr JSON auf ein Class Objekt zu deserialisieren, von dem es nicht weiß, wie es zu machen ist. Dies wird wahrscheinlich im Zusammenhang mit der anderen Frage

Dies sollte nur

MetadataContentBean.class 
+0

Danke, das war das Problem, aber trotzdem würde ich gerne wissen, was die Bedeutung des Fehlers ist !! Danke nochmal –

4

sein, aber nur die Antwort zu vervollständigen, Fehler kommen aus Diskrepanz: Typ „java.lang.Class“ als JSON String serialisiert (Klassenname selbst) und nicht als JSON-Objekt wie Beans. Deserializer erwartet daher eine JSON-Zeichenfolge, sieht stattdessen ein JSON-Objekt (das mit START_OBJECT beginnt) und löst eine Ausnahme aus.

Verwandte Themen