ObjectMapper和Class.forName()

时间:2014-08-12 12:10:29

标签: java android jackson

我正在尝试使用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变量不是这样。可能是错误原因是什么?

1 个答案:

答案 0 :(得分:0)

问题是我将rootName写为文字字符串,而不是变量名。

return mapper.treeToValue(root.get("rootName"), clazz); // wrong
return mapper.treeToValue(root.get(rootName), clazz);  //  correct