使用GSON解析内部具有多个子对象的json对象

时间:2015-09-07 14:11:20

标签: json gson retrofit

我对我想要使用的API的响应有疑问,我正在使用 Retrofit 1.9.0 GSON 2.3.1 开发一个消耗此API的APP强>

我要解析的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。

1 个答案:

答案 0 :(得分:0)

尝试为回调指定具体类型,例如HashMapMap是一个界面。

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

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