Gson解析json数据的案例一
转自: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字段来定义哦。
Gson解析json数据的案例一的更多相关文章
- Android中使用Gson解析JSON数据的两种方法
		
Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...
 - Android网络之数据解析----使用Google Gson解析Json数据
		
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
 - Google Gson解析Json数据应用实例
		
转自:http://lixigao449778967.blog.163.com/blog/static/24985164201269105928783/ 1.需要的Jar包 1) Google Gso ...
 - Android中使用Gson解析JSON数据
		
Android中使用Gson解析JSON数据 在Android中可以使用Gson解析JSON数据 首先,从 code.google.com/p/google-gson/downloads/list ...
 - JAVA使用Gson解析json数据,实例
		
封装类Attribute: public class Attribute { private int id; private String name; private int age; public ...
 - 通过Gson解析Json数据
		
Json是一种数据格式,便于数据传输.存储.交换:Gson是一种组件库,可以把java对象数据转换成json数据格式. gson.jar的下载地址:http://search.maven.org/#s ...
 - 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
		
1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...
 - android 初步了解应用Gson 解析Json数据
		
1,因为没有服务器返回数据,对于Tomcat又懒得去配,所以我直接把数据写死到app中 先写一个实体类,便于操作 /** * 实体类 */ public class Person { int id ; ...
 - Gson解析json数据(转)
		
一. www.json.org这是JSON的官方网站. 首先,我,我们需要在code.google.com/p/google-gson/downloads/list下载JSON的jar包,解析后把gs ...
 
随机推荐
- 【转帖】置高并发jdbc连接池
			
简单的MySQL连接池 <Resource type="javax.sql.DataSource" name="jdbc/TestDB" factory= ...
 - 《算法》C++代码 Floyd
			
今天写写最短路径的Floyd算法(有翻译叫弗洛伊德,不过这奇葩翻译用来读读就好……). 这个算法的实质,广义来讲,其实是DP(动态规划).其实按说,算法应该先说说什么贪心.搜索.DP.二分之类的基本算 ...
 - C:\Windows\System32目录可执行文件列表(Win7 64)
			
C:\Windows\System32>where /? C:\Windows\System32>where "c:\windows\system32:*.exe" & ...
 - flask_入门教程之一
			
一.教程涉及开发语言.脚本.框架.数据库等内容 Python + Flask + requests 通过命令安装:pip install flask 二.创建第一个flask脚本 一个最小的 Flas ...
 - python负数除法与模运算
			
1.负数除法: >>> print 45/76>>> print -45/7-7 >>> print 45/-7-7 >>> p ...
 - crmsh语法
			
.查看配置信息 crm(live)# configure crm(live)configure# show node node1 node node2 property cib-bootstrap-o ...
 - python  pip  install  XXX出现报错问题
			
重装Anacondas后,将pip 和python.exe路径加入到环境变量后直接在cmd窗口进行pip 操作,报错如下 报错内容为: pip is configured with locations ...
 - 集训队日常训练20181124 DIV2
			
急急忙忙要出去比赛就拉了一场有点sb的题目 5202: 网络寻路 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte总提交: 15 ...
 - 后端model传入前端JSP页面中的值判断后再取值
			
所遇到的问题后端model传入前端JSP页面中的值通过foreach循环内要满足条件才能取值给Div中,我们知道jsp页面中可以直接用EL表达式取值,格式就是${"model中传来的数据&q ...
 - Linux学习15_CentOS6.5下netcat工具安装教程
			
1.下载 下载地址:http://sourceforge.net/projects/netcat/files/netcat/0.7.1/ 下载的是netcat-0.7.1.tar.gz版本 2.拷贝 ...