[英]Passing a class as a parameter in Java
所以我正在使用com.fasterxml.jackson readValue方法,该方法工作得很好。 它接收一个json字符串和一个POJO,该POJO已填充并保存到obj:
Object obj = mapper.readValue(myJsonString, MyPojo.class);
由于某种原因,如果我创建一个执行相同操作的util类,则在使用readValue()方法时会出现IO异常。 当我打印c时,我得到:“ class models.UserProfile”。 当我打印出c.getClass()时,我得到“ class java.lang.class”。 我上课的方式有问题吗?
public static Object deserialize(String s, Class c) throws JsonParseException, JsonMappingException, IOException {
Object obj = mapper.readValue(s, c);
return obj;
}
您可以使用通用类型:
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()
。 或有可能:映射器已重用。
您正在寻找的可能是c.getName()
而不是c.getClass()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.