我正在尝试使用Jackson的ObjectMapper和Class.forName
方法。
private Object createObject(String json, String rootName) {
try {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
false);
JsonNode root = mapper.readTree(json);
Class clazz = Class.forName("com.model." + Finder.findClassName(rootName));
return mapper.treeToValue(root.get("rootName"), clazz);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
它无效,我收到以下错误消息:
Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
但是,没有空引用,因为clazz
变量不是这样。可能是错误原因是什么?
答案 0 :(得分:0)
问题是我将rootName写为文字字符串,而不是变量名。
return mapper.treeToValue(root.get("rootName"), clazz); // wrong
return mapper.treeToValue(root.get(rootName), clazz); // correct