我目前有将JSON字符串映射到API的类的代码,但是我需要在运行时将JSON映射到由类名指定的不同类的代码,而不是一个硬编码的类名。

这是我当前的代码:

ObjectMapper aObjectMapper = new ObjectMapper();
aClass request = aObjectMapper.readValue(String, aClass.class);


哪个工作正常。

现在,我希望能够映射到任何通用类名称而不是aClass,但是尝试类似

Class theRandomClass = theRandomClass.class;
theRandomClass.getClass() request = aObjectMapper.readValue(String,
                                     theRandomClass.getClass()) //gives an error


知道如何处理吗?非常感激。

最佳答案

Class theRandomClass = theRandomClass.class;java.lang.Class对象分配给theRandomClass

意思是

aObjectMapper.readValue(String, theRandomClass.getClass())


将尝试将JSON字符串反序列化为java.lang.Class对象。如果不清楚问题出在哪里,请注意程序不能仅仅创建java.lang.Class实例,因此Jackson将无法反序列化字符串。

您需要的是

aObjectMapper.readValue(String, theRandomClass)

07-26 05:57