在Java中将类作为参数传递

时间:2015-09-23 16:49:14

标签: java json class jackson

所以我使用了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;
}

2 个答案:

答案 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()