解析Json数据时,遇到二维数组或者更多维的数组的处理方法。
Json如下:
{"code": 1,
"data": [
[
{
"nodename": "测试",
"addr": "中国北京市xx区xx路x号",
"uid": "123",
}
],
[
{
"nodename": "测试",
"addr": "中国北京市xx区xx路x号",
"uid": "123",
}
],
[
{
"nodename": "测试",
"addr": "中国北京市xx区xx路x号",
"uid": "123",
}
]
],
"message": "success!"}
看到这种JSON,新入门的伙伴们肯定会感到头大,好像很麻烦也!?
JsonObject
采用原生的JsonObject,JsonArray方式会非常非常麻烦,首先解析JsonObject==》解析"data" JsonArray==>再解析JsonArray[i]==>再解析JsonObject。
是不是看上去就懵逼,而且很复杂。
那么肯定有更简单的方式去解析这种多维的JSON数组。
Gson
今天就讲一下Gson解析多维数组:
- 使用Gson解析json数据,就一定会用到实体类,根据json内容,创建我们的UserBean实体类
切记一定要实现Serializable序列化接口,只有这样才能正常解析或者转换。
public class UserBean implements Serializable {private String addr;
private String nodename;
private String uid;
//=====================================
//上面3个参数名就是对应的json对象
{
"nodename": "测试",
"addr": "中国北京市xx区xx路x号",
"uid": "123",
}
//=====================================public String getUid() {
return userid;
}public void setUid(String uid) {
this.uid = uid;
}public String getAddr() {
return addr;
}public void setAddr(String addr) {
this.addr = addr;
}public String getNodename() {
return nodename;
}}
2.分析要解析的Json结构:
{"code": 1,
"data": [
[
{
"nodename": "测试",
"addr": "中国北京市xx区xx路x号",
"uid": "123",}
]],
"message": "success!"}
分析步骤:①把最外围的键对当做实体类中的参数名 ,一定要与json数据中的键名保持一致,我们生成实体类的时候,一般参数名都是小写
②键值对相对应的值的类型就是我们实体类中参数名的类型。扩展:
如"data":[]碰到这种键值对,实体类中的参数就可以写成 List