无法从START_OBJECT标记中反序列化java.lang.Class的实例

Bla*_*dez 6 java jackson

我无法正确理解运行此代码时出现的错误:

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());
Run Code Online (Sandbox Code Playgroud)

错误:

org.codehaus.jackson.map.JsonMappingException:不能在[来源反序列化java.lang.Class的实例进行START_OBJECT令牌:java.io.StringReader@e3b895; 行:1,柱:1]在org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:159)在org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:192)在有机.codehaus.jackson.map.deser.StdDeserializer $ ClassDeserializer.deserialize(StdDeserializer.java:439)在org.codehaus.jackson.map.deser.StdDeserializer $ ClassDeserializer.deserialize(StdDeserializer.java:421)在org.codehaus.jackson .map.ObjectMapper._readMapAndClose(ObjectMapper.java:1588)在org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1116)在com.path.parser.JSon.Parser(JSon.java:65)在COM.

这是什么意思??

也许如果我知道这一点,我可以找出我的错误.

ska*_*man 12

你的问题是最后一行:

MetadataContentBean.class.getClass()
Run Code Online (Sandbox Code Playgroud)

这意味着"让我获取ClassMetadataContentBean类的对象,然后获取该Class对象的Class对象"....如果你明白我的意思.所以你要求杰克逊将你的JSON反序列化到一个Class它不知道该怎么做的对象上.

这应该是公正的

MetadataContentBean.class
Run Code Online (Sandbox Code Playgroud)