我正在使用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