使用 GSON 解析一个包含多个子对象的 json 对象

Parse a json object with multiple sub-objects inside with GSON

我对我想使用的 API 的响应有疑问,我正在开发一个使用 API 使用 Retrofit 1.9.0[= 的应用程序33=] 和 GSON 2.3.1.

我要解析的Json是这样的:

{
  "user1": {
    "id": 1,
    "name": "foo",
    "address": "bar"
  },

  "user2":{
    "id": 2,
    "name": "foo",
    "addres":"bar"
  },

  ... it can be any number of users ...

  "userN":{
    "id": N,
    "name": "foo,
    "address": "bar"
  }

}

所以我有一个名为 User:

的 POJO
public class User{
    private int id;
    private String name;
    private String address;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}

我试图用配置 Map<String, User>:

解析 json
Callback< <Map<String, User> > callback

但是当我 运行 它时,我有一个 GSON 错误:

gson expecting array but found object

如何以正确的方式解析 json?

PD:我无法更改 API 响应,它是外部 API。

尝试为您的回调指定具体类型,例如 HashMapMap 是一个接口。

Callback< <HashMap<String, User> > callback;

通常你会得到转换异常而不是解析错误,但值得一试。