Java 将JSON反序列化到动态加载的类文件中
我在JSON响应中从模式生成了POJO,编译并加载了从POJO生成的类,但在JSON响应反序列化时,我没有可以反序列化的实际类Java 将JSON反序列化到动态加载的类文件中,java,json,reflection,jackson,classloader,Java,Json,Reflection,Jackson,Classloader,我在JSON响应中从模式生成了POJO,编译并加载了从POJO生成的类,但在JSON响应反序列化时,我没有可以反序列化的实际类 MyClassLoader classLoader = new MyClassLoader(POJOGeneratorForJSON.class.getClassLoader()); Class parentJsonClass = classLoader.loadClass(topLevelclassName, classpathLoc); ObjectMapper
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:无法从START\u对象标记中反序列化java.lang.Class的实例
”
我知道在
mapper.readValue()
中,我需要提供实际的类作为第二个参数,但不知道如何提供。有人能帮我解决问题吗?关于readValue
的第二个参数,您需要传递一个类
实例来定义要读取的对象的类型。似乎您正在传递类的类型本身。jackson无法从jsonBytes
反序列化类
对象。像这样的方法应该会奏效:
Object jsonObj = mapper.readValue(jsonBytes, parentJsonClass);
i、 e.从jsonBytes
中读取一个类型为parentJsonClass
的对象,非常感谢Manos…这很有效。。。。我的错。但我的最终需要是调用ParentJsonClass内部的方法(我们将对象作为ParentJsonClass),但其类型为Class而不是ParentJsonClass。您可以在这方面提供帮助吗?您可以使用类parentJsonClass
将对象jsonObj
强制转换为该类型。因此,如果有一个方法foo()
sayparentJsonClass.cast(jsonObj.foo()代码>使用上述方法,我只能看到对象级方法,而不能看到ParentJsonClass类中的方法。我的问题是,我甚至不知道班上的方法。尝试列出具有反射的类的公共方法。或者尝试parentJsonClass.getMethods()