所以我使用了com.fasterxml.jackson readValue方法,它完全正常。它接受一个json String和一个填充并保存到obj的POJO:
Object obj = mapper.readValue(myJsonString, MyPojo.class);
出于某种原因,如果我创建一个做同样事情的util类,当我使用readValue()方法时会出现IO异常。当我打印c时,我得到:" class models.UserProfile" 。当我打印出c.getClass()时,我得到"类java.lang.class"。我通过课程的方式有问题吗?
public static Object deserialize(String s, Class c) throws JsonParseException, JsonMappingException, IOException {
Object obj = mapper.readValue(s, c);
return obj;
}
答案 0 :(得分:0)
您可以使用通用输入:
MyPojo obj = mapper.readValue(myJsonString, MyPojo.class);
public static <T> T deserialize(String s, Class<T> c)
throws JsonParseException, JsonMappingException, IOException {
return mapper.readValue(s, c);
}
MyPojo obj = Util.deserialize(myJsonString, MyPojo.class);
然而,您的实用程序方法使用静态mapper
,这可能不是一个好主意。
发现这种奇怪的结果是因为没有使用c.getName()
。 c.getClass()
当然是Class
。
错误以某种方式传递c.getClass()
。或者可能:重复使用映射器。
答案 1 :(得分:0)
您正在寻找的内容可能是c.getName()
而不是c.getClass()
。