转自:http://blog.csdn.net/l331258747/article/details/51547338;

Android利用Gson解析嵌套多层的Json

首先先讲一个比较简单点的例子(最简单的我就不讲啦,网上很多),帮助新手理解Gson的使用方法:
比如我们要解析一个下面这种的Json:
String json = {"a":"100","b":[{"b1":"b_value1","b2":"b_value2"},{"b1":"b_value1","b2":"b_value2"}],"c":{"c1":"c_value1","c2":"c_value2"}}

首先我们需要定义一个序列化的Bean,这里采用内部类的形式,看起来会比较清晰一些:

一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一致。

public class jsonBean {

    private String a;
private List<bb> b;
public C c; public class bb{
private String b1;
private String b2;
public String getB1() {
return b1;
}
public void setB1(String b1) {
this.b1 = b1;
}
public String getB2() {
return b2;
}
public void setB2(String b2) {
this.b2 = b2;
}
} public class C{
private String c1;
private String c2;
public String getC1() {
return c1;
}
public void setC1(String c1) {
this.c1 = c1;
}
public String getC2() {
return c2;
}
public void setC2(String c2) {
this.c2 = c2;
}
} public String getA() {
return a;
} public void setA(String a) {
this.a = a;
} public List<bb> getB() {
return b;
} public void setB(List<bb> b) {
this.b = b;
} public C getC() {
return c;
} public void setC(C c) {
this.c = c;
}
}
public static void main(String[] args) {
String jsonstr ="{\"a\":\"100\",\"b\": [{ \"b1\": \"b_value1\",\"b2\": \"b_value2\"},{\"b1\": \"b_value1\",\"b2\": \"b_value2\"}] ,"
+ "\"c\": {\"c1\": \"c_value1\",\"c2\": \"c_value2\"}}"; Gson gson = new Gson(); jsonBean jsbean=gson.fromJson(jsonstr, jsonBean.class);
//java.lang.reflect.Type type = new TypeToken<jsonBean>() {}.getType();//Gson的第二种构造比较麻烦
//jsonBean jsbean = gson.fromJson(json, type); System.out.println(jsbean.getA());
System.out.println(jsbean.getB().get().getB1());
System.out.println(jsbean.getB().get().getB2());
System.out.println();
System.out.println(jsbean.getB().get().getB2()); System.out.println(jsbean.getC().getC1());
System.out.println(jsbean.getC().getC2());
}    

很多时候大家都是不知道这个Bean是该怎么定义,这里面需要注意几点:
             1、类里面的属性名必须跟Json字段里面的Key是一模一样的;
             2、内部嵌套的用[]括起来的部分是一个List,所以定义为 public List<B> b,而只用{}嵌套的就定义为 public C c,

如果需要解析的Json嵌套了很多层,同样可以可以定义一个嵌套很多层内部类的Bean,需要细心的对照Json字段来定义哦。

最新文章

  1. SSH免手动输入密码和设置代理
  2. 【PRINCE2是什么】PRINCE2认证之七大主题(1)
  3. homework 11 2016 5 13 读入文件做输入
  4. OpenCart 最新使用教学视频合集
  5. RTMP命令亲自测试记录
  6. JavaScript入门基础
  7. Ural 1258 镜面对称
  8. c#使用Dictionary统计字符串中出现次数最多字符
  9. BZOJ NOI十连测 第二测 T2
  10. 四个常用.NET的SqlHelper的方法
  11. js打开新窗口的两种方式
  12. 基于visual Studio2013解决面试题之0203栈实现
  13. Delphi 基本数据类型列表 高级数据类型列表 字符类型查询列表清单
  14. IOS经典的书籍推荐
  15. hellocharts-android开源图表库(效果非常好)
  16. java实现在线支付
  17. dgraph实现基本操作
  18. Lodop简短问答客户反馈篇 及排查步骤 及注册相关
  19. [Linux]php+apache 和 php+nginx的区别
  20. Python 面向对象4-继承

热门文章

  1. 11.1,nginx集群概念
  2. hover 改变另一个标签的属性
  3. HDFS写数据和读数据流程
  4. JavaSE总结--面向对象
  5. web开发学习之路是否有尽头
  6. Android如何实现毛玻璃效果之Android高级模糊技术
  7. Vue组件编写
  8. 关于JavaScript设计模式的学习(二)
  9. Pytest+allure+jenkins生成测试报告
  10. hdu2010(dfs+剪枝)