Gson可以解析map且支持范型,如:
{
"1":{
"name":"hello"
},
"2":{
"name":"hello2"
}
}
如下代码解析:
public class Person{
String name;
}
Type type = new TypeToken<Map<String,Person>>() {}.getType();
Map<String,Person> map2 = new Gson().fromJson(json,type);
但是如果json是这样的呢?如何解析data不是最外层的map呢?
{
"city":"沈阳",
"data":{
"1":{
"name":"hello"
},
"2":{
"name":"hello2"
}
}
}
办法是分步解析。
1.先解析root。
public class Root{
String city;
JsonObject data;
}
Data data = new Gson().fromJson(json,Root.class);
2.再解析data。
Type type = new TypeToken<Map<String,Person>>() {}.getType();
Map<String,Person> map2 = new Gson().fromJson(data,type);
网友评论