【发布时间】:2019-02-07 07:25:48
【问题描述】:
我正在尝试使用 Jackson 库反序列化以下 JSON。这个 JSON 与 this question 中提到的非常相似。我的问题是: 如何反序列化以下 JSON?
{
"A": [
{
"id": 16,
"logo": "QJQSZzbXurElfHYcq6hcbPuaWKVfQU31lx2eSIIr.png",
},
{
"id": 20,
"logo": "AizaZzbXurElfHYcq6PuaWKV2761lx2eSLESASFr.png",
}
],
"B": [
{
"id": 42,
"logo": "tBYhHGTNTCYT60RZJydMyGgg47Tla36ISuRj4p0e.png",
},
{
"id": 44,
"logo": "kCZveUWo9eqIZc25deE4ln8llxlbBviRolk4PsCm.png",
}
]
}
这里是MonthTree类:
public class MonthTree {
private int id;
private String logo;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLogo() {
return logo;
}
public void setLogo(String logo) {
this.logo = logo;
}
}
但是,我尝试获取数组名称的列表/数组(A 和 B)、id 和 logo 属性,但我失败了。这是我尝试做的:
ObjectMapper mapper = new ObjectMapper();
List<MonthTree> monthTrees = mapper.readValue(json_res, new TypeReference<List<MonthTree>>(){});
所以,我得到了以下异常:
无法从 START_OBJECT 令牌中反序列化
com.talmir.myApp.utils.MonthTree[]的实例
附言我是这个库的新手,所以不知道这个库还有什么功能。
【问题讨论】:
-
您没有对象列表,因此您不需要使用“TypeReference”。你能发布你的班级 MonthTree 吗?
-
@BrunoCarletti 我编辑了问题。
-
“A”和“B”是静态字段吗?或者它们将是一个动态字段?可以出现一个“C”?
-
不,它们是静态字段,但有可能在 json 中看到另一个“C”、“D”、“E”等。