我正在使用fasterxml.jackson。我很困惑readValue()
。这是我的问题。JSON如何反序列化数组?
我知道杰克逊以两种不同的方式反序列化普通的JavaBean和Collection。 对于JavaBean,我们可以通过MyBean.class
或new TypeReference<MyBean>
至readValue()
。对于收藏品,我们必须通过new TypeReference<List<MyBean>>
。这是因为TypeReference
保存了Collection删除的类型。我对吗? :)
现在我很困惑。如果MyBean
包含一个列表,那么我仍然可以通过MyBean.class
,它的工作原理。杰克逊如何做到这一点?
public class MyBean {
String str;
List<String> strList;
}
strList字段的泛型类型可以使用反射。但是你不能在Java中传递'List .class'作为参数。只有'List.class'。 –
也许这个链接帮助你https://stackoverflow.com/a/6349488/6296931 –
我的问题是:我认为JSON不能反序列化List,因为类型擦除。这就是为什么我们必须通过TypeReference。但是如果Java Bean包含List,那么JSON如何在运行时知道它的泛型? –
zchen