我这次讲解一个不太复杂的示例。
我使用的是Android studio,需要在gradle里添加
compile'com.google.code.gson:gson:2.6.2'
让其自动配置。
首先拿到一个json数据,如下
String json="{'status':'0','msg':'ok'," + " 'result':{'total':'67331','pagenum':'1','pagesize':'3'," + " 'list':[{'content':'过完年带着媳妇出发回城市上班,老妈大包小裹的给我装吃的,什么猪头排骨猪肘子猪肉装了三大袋子!媳妇瞅瞅老妈鬓边的白发一时心酸,跟她说了一句:养猪不容易,留着您自己吃吧?老妈跟媳妇说:“养了二十多年的猪都跟你走了,这些肉你也带走吧……”', 'addtime':'2018-03-21 03:20:09','url':'http://m.kaixinhui.com/detail-96369.html'}," + "{'content':'一青年问禅师:“大师,我事业,生活,爱情全都不顺,我该怎么办啊?”禅师把他领到一片梅花前,青年大悟:“你是要我再忍耐,梅花香自苦寒来是吗?”禅师摇摇头:“没钱你搞个毛!”','addtime':'2018-03-21 03:20:09','url':'http://m.kaixinhui.com/detail-96368.html'}," + " {'content':'昨天晚上到朋友家吃饭,他家的小孩问我说:“叔叔,叔叔,你叫我一声孙悟空,好吗?”我开始没说话,在他再三要求下,我应战了,我叫了一声:“孙悟空!”这熊孩子:“呔!爷爷在此!”当时我绿着脸凌乱着。。。', 'addtime':'2018-03-21 03:20:09','url':'http://m.kaixinhui.com/detail-96367.html'}]}}";
之后根据json数据新建一系列的bean。
首先分析数据源,从大到小看(如果这样换行看着不舒服可以弄成一行,在分析):
第一个{ }开始 有三个小分类:分别是status 、msg 、result
之后第二个是result下有四个小分类:total、pagenum、pagesize、list
第三个是一个list,他是一个jsonarray的形式,可以集成list集合看,只看其中一个,有三个小类:content、addtime、url。
分清楚后我们开始建bean。
先从最小的开始建,最小的是list的,有三个属性,命名为Joke
public class Joke { private String content; private String addtime; private String url; public Joke() { } public Joke(String content, String addtime, String url) { this.content = content; this.addtime = addtime; this.url = url; } public String getContent() { return content; } public String getAddtime() { return addtime; } public String getUrl() { return url; } @Override public String toString() { return "content:"+content+",addtime:"+addtime+",url:"+url; } }
之后是上一个,有四个属性 命名为PageInfo1,
(注意::属性的名称 ,一定要与上面的相符,否则Gson不能识别)
public class PageInfo1 { private String total; private int pagenum; private int pagesize; private List<Joke> list; public PageInfo1() { } public String getTotal() { return total; } public int getPagenum() { return pagenum; } public int getPagesize() { return pagesize; } public List<Joke> getList() { return list; } public PageInfo1(String total, int pagenum, int pagesize, List<Joke> jokeList) { this.total = total; this.pagenum = pagenum; this.pagesize = pagesize; this.list = jokeList; } @Override public String toString() { String s=""; return "total:"+total+",pagenum:"+pagenum+",pagesize"+pagesize+s; } }
最后一个 也就是最大的命名为ABB,有三个属性
public class ABB { private String status; private String msg; private PageInfo1 result; public ABB() { } public ABB(String status, String msg, PageInfo1 result) { this.status = status; this.msg = msg; this.result = result; } public String getStatus() { return status; } public String getMsg() { return msg; } public PageInfo1 getResult() { return result; } }
bean建好之后,我们回到MainActivity,
Gson gson=new Gson(); ABB abb=gson.fromJson(json,ABB.class); Log.d("AAccff","测试"); for(int i = 0;i<abb.getResult().getList().size();i++){ jokeList.add(abb.getResult().getList().get(i)); } for(Joke j:jokeList){ Log.d("aaccff",j.toString()); }
敲上如上代码,这里只用日志打出list中的内容,其余内容,可自行打印。
03-21 13:21:03.644 17757-17757/com.iflytek.json D/AAccff: 测试 03-21 13:21:03.644 17757-17757/com.iflytek.json D/aaccff: content:过完年带着媳妇出发回城市上班,老妈大包小裹的给我装吃的,什么猪头排骨猪肘子猪肉装了三大袋子!媳妇瞅瞅老妈鬓边的白发一时心酸,跟她说了一句:养猪不容易,留着您自己吃吧?老妈跟媳妇说:“养了二十多年的猪都跟你走了,这些肉你也带走吧……”,addtime:2018-03-21 03:20:09,url:http://m.kaixinhui.com/detail-96369.html 03-21 13:21:03.644 17757-17757/com.iflytek.json D/aaccff: content:一青年问禅师:“大师,我事业,生活,爱情全都不顺,我该怎么办啊?”禅师把他领到一片梅花前,青年大悟:“你是要我再忍耐,梅花香自苦寒来是吗?”禅师摇摇头:“没钱你搞个毛!”,addtime:2018-03-21 03:20:09,url:http://m.kaixinhui.com/detail-96368.html 03-21 13:21:03.644 17757-17757/com.iflytek.json D/aaccff: content:昨天晚上到朋友家吃饭,他家的小孩问我说:“叔叔,叔叔,你叫我一声孙悟空,好吗?”我开始没说话,在他再三要求下,我应战了,我叫了一声:“孙悟空!”这熊孩子:“呔!爷爷在此!”当时我绿着脸凌乱着。。。,addtime:2018-03-21 03:20:09,url:http://m.kaixinhui.com/detail-96367.html
好了这就是一个完整的Gson解析。