GSON例外:预计BEGIN_ARRAY但是BEGIN_OBJECT

时间:2016-05-06 17:37:29

标签: java android json gson

我从.NET WS获得JSON响应(项目列表),因此我想在我的Android应用程序中转换为List。但是当使用GSON库时,我得到以下异常:

  

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:   预期BEGIN_ARRAY但在第1行第2列路径$

处是BEGIN_OBJECT

JSON回复:

{
    "d": [
        {
            "Id":1,
            "Name":"Name1",
            "Email":"name1@gmail.com"
        },
        {
            "Id":2,
            "Name":"Name2",
            "Email":"name2@gmail.com"
        }
    ]
}

Android GSON代码:

Gson gson = new Gson();
Type listType = new TypeToken<List<User>>(){}.getType();
List<User> users = (List<User>) gson.fromJson(response, listType);

据我了解,JSON正在返回一个项目列表,我也试图解析一个项目列表,所以我不明白这个问题。

提前致谢

1 个答案:

答案 0 :(得分:3)

您的JSON是{ ... },因此不是列表,但d是一个列表。

这是完全未经测试的,但您应该这样做:

class Foo {
    List<User> d;
}

Gson gson = new Gson();
Foo foo = gson.fromJson(response, Foo.class);
List<User> users = foo.d;