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,这里采用内部类的形式,看起来会比较清晰一些:

public class JsonBean { public String a; public List<B> b; public C c; public static class B { public String b1; public String b2; } public static class C { public String c1; public String c2; } }

很多时候大家都是不知道这个Bean是该怎么定义,这里面需要注意几点:

1、内部嵌套的类必须是static的,要不然解析会出错;

2、类里面的属性名必须跟Json字段里面的Key是一模一样的;

3、内部嵌套的用[]括起来的部分是一个List,所以定义为 public List<B> b,而只用{}嵌套的就定义为 public C c,

具体的大家对照Json字符串看看就明白了,不明白的我们可以互相交流,本人也是开发新手!

Gson gson = new Gson(); java.lang.reflect.Type type = new TypeToken<JsonBean>() {}.getType(); JsonBean jsonBean = gson.fromJson(json, type);

然后想拿数据就很简单啦,直接在jsonBean里面取就可以了!

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

以上这篇Android利用Gson解析嵌套多层的Json的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

时间: 2024-09-15 06:58:39

Android利用Gson解析嵌套多层的Json的简单方法的相关文章

Android利用Gson解析嵌套多层的Json的简单方法_Android

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

利用GSON解析JSON数据

main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools

java-请问如果利用gson解析这种复合格式的json数据?

问题描述 请问如果利用gson解析这种复合格式的json数据? 初学java,在与别人一起做项目时 他发送过来的json格式是{"data":"", "info":"", "status":""} 其中,info和status的类型固定是字符和数字 但data里面的内容是类型不定的list 请问要怎么解决这个data的解析? 重点是list的类型不定!!! 不可能每种类型就又多写一个类去

android网络-Android中gson解析的问题

问题描述 Android中gson解析的问题 怎么解析一个数组里两个不同长度的大括号,{"a":[{"b":0},{"c":1,"d":2},{"c":3,"d":4}]},实体类里怎么写,谢谢 解决方案 定义类中包含最大范围,(b,c,d),当然最好不要这样,让后台规范json,不用这样混乱 解决方案二: 那种带冒号的数据类型是HashMap,直接定义成HashMap就行了

android避免弹出软键盘遮盖listview的简单方法_Android

做开发的时候,我们常常把listview放中间,然后底部放置一个edittext控件,这样导致editext控件获得焦点的时候,输入法弹出,Edittext控件上移,挡住了listview的部分数据,这样不太美观.所以,我们需要让listview也跟着上移,所以需要: 方法一:在xml文件中,设置listview属性时候加上这句就ok了android:transcriptMode="normal": 方法二:在程序中加入语句: listView.setTranscriptMode(Li

Android实现二维码扫描和生成的简单方法_Android

这里简单介绍一下ZXing库.ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码.该项目可实现的条形码编码和解码.目前支持以下格式:UPC-A,UPC-E.EAN-8,EAN-13.39码.93码.ZXing是个很经典的条码/二维码识别的开源类库,以前在功能机上,就有开发者使用J2ME运用ZXing了,不过要支持JSR-234规范(自动对焦)的手机才能发挥其威力. ZXing

android避免弹出软键盘遮盖listview的简单方法

做开发的时候,我们常常把listview放中间,然后底部放置一个edittext控件,这样导致editext控件获得焦点的时候,输入法弹出,Edittext控件上移,挡住了listview的部分数据,这样不太美观.所以,我们需要让listview也跟着上移,所以需要: 方法一:在xml文件中,设置listview属性时候加上这句就ok了android:transcriptMode="normal": 方法二:在程序中加入语句: listView.setTranscriptMode(Li

Android利用Gson实现对象和Json数据的相互转换

MainActitity如下: package cc.test; import android.app.Activity; import android.os.Bundle; /** * Demo描述: * 利用Gson实现对象和Json数据的相互转换 * * Demo描述: * 通过一个网络请求,获取JSON数据 * * 注意: * 1 网络请求的参数是JSON格式的数据 * 2 请求结果返回的亦是JSON格式的数据 * */ public class MainActivity extends

Android利用Jsoup解析html 开发网站客户端小记

这些天业余时间比较多,闲来无事,想起了以前看过开发任意网站客户端的一 篇文章,就是利用jsoup解析网站网页,通过标签获取想要的内容.好了废话不多 说,用到的工具为 jsoup-1.7.2.jar包,具体jsoup的相关文档,请去这边看 http://jsoup.org/,这里有全部Api可以查询. 这里解析的网站是一个食谱网站,首先解析的是大类栏目标签. 如果你使用过jquery那么 ,接下来的事情就小菜一碟了,我们按F12进入浏览 器的开发者模式,去分析当前html页面的结构,如下图: 每个