使用 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。
尝试为您的回调指定具体类型,例如 HashMap
。 Map
是一个接口。
Callback< <HashMap<String, User> > callback;
通常你会得到转换异常而不是解析错误,但值得一试。
我对我想使用的 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
:
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>
:
Callback< <Map<String, User> > callback
但是当我 运行 它时,我有一个 GSON 错误:
gson expecting array but found object
如何以正确的方式解析 json?
PD:我无法更改 API 响应,它是外部 API。
尝试为您的回调指定具体类型,例如 HashMap
。 Map
是一个接口。
Callback< <HashMap<String, User> > callback;
通常你会得到转换异常而不是解析错误,但值得一试。