我在JSON响应中从Schema生成了POJO,编译并加载了从POJO生成的类,但在反序列化JSON响应时,我没有实际的类我可以反序列化。
MyClassLoader classLoader = new MyClassLoader(POJOGeneratorForJSON.class.getClassLoader());
Class parentJsonClass = classLoader.loadClass(topLevelclassName, classpathLoc);
ObjectMapper mapper = new ObjectMapper();
byte[] jsonBytes = generator.getBytesFromURL(source);
if(jsonBytes != null){
Object jsonObj = parentJsonClass.newInstance();
jsonObj = mapper.readValue(jsonBytes, Class.class);
}
我得到的例外是:" com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.Class out of START_OBJECT token
"
我知道在mapper.readValue()
我需要提供实际的类作为第二个参数,但不知道如何。有人可以帮我解决一下吗?
答案 0 :(得分:1)
在readValue
的第二个参数上,您需要传递一个Class
实例来定义您想要阅读的对象的类型。看来你传递的是Class
本身的类型。杰克逊无法从Class
反序列化jsonBytes
对象。这样的事情应该有效:
Object jsonObj = mapper.readValue(jsonBytes, parentJsonClass);
即。从parentJsonClass
jsonBytes
类型的对象