Gson,TypeToken,从JSON获取对象数组,未设置字段值

时间:2015-08-11 10:41:01

标签: json gson

我试图使用Gson及其TypeToken类从JSON字符串中获取对象数组。

以下是我使用的代码:

List<MyItem> items = gson.fromJson(jsonString, new TypeToken<ArrayList<MyItem>>() {
 }.getType());

创建了对象列表,它具有预期数量的MyItem对象,但未设置其所有字段值(它们为null,0,false,默认值)。

为什么没有设置这些字段值?我错过了什么吗?

JSON字符串本身是正确的,我以其他方式获取这些对象(使用更详细的代码和另一个库)。我只是想编写紧凑的代码。

1 个答案:

答案 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正确的集合对象。