我试图使用Gson及其TypeToken类从JSON字符串中获取对象数组。
以下是我使用的代码:
List<MyItem> items = gson.fromJson(jsonString, new TypeToken<ArrayList<MyItem>>() {
}.getType());
创建了对象列表,它具有预期数量的MyItem对象,但未设置其所有字段值(它们为null,0,false,默认值)。
为什么没有设置这些字段值?我错过了什么吗?
JSON字符串本身是正确的,我以其他方式获取这些对象(使用更详细的代码和另一个库)。我只是想编写紧凑的代码。
答案 0 :(得分:1)
你可能会混淆各种对象。 如果您的对象类型不对应,则不会调用setter。
public class MyObjectA implements Serializable
{
private MyObjectB myObjectB;
// with getter and setter
}
public class MyObjectB implements Serializable
{
private int id;
// with getter and setter
}
如果您返回List<MyObjectA>
,则json返回将是:
[{
"myObjectB": {
"id": 6034
}
}]
Json array to ArrayList gson,就像你做的那样:
Type collectionType = new TypeToken<ArrayList<MyObjectA>>() {}.getType();
ArrayList<MyObjectA> navigation = gson.fromJson(jsonResponse, collectionType);
for (MyObjectA myObjectA : navigation) {
System.out.println(myObjectA.getMyObjectB().getId());
}
混淆对象类,不警告既不崩溃,也不设置objets正确的集合对象。