我目前有将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)