




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
安卓中解析json数据一、概述JSON是JavaScriptObjectNotation的简称,起源于js(javascript)它是一种轻量级的数据交换格式,JSON不仅在js中广泛使用,同时还在其他领域得到广泛使用,如c,c++,java,Php,swift等等,成为了一种通用的理想数据交换格式,它有两种数据结构,分别是对象,数组,它形式上有花括号{}和中括号[]嵌套,{}中的是代表对象,[]中的为数组,即对象中有数组,数组中又有对象,而且以及键/值对出现。json语法:数据在键值对中数据有逗号分离花括号保存对象json的值:数字(整数或浮点数)字符串(在双引号中)逻辑值(true或false)数组(在方括号中)对象(在大括号中)nulljson和xml的比较数据体积小,花费流量比xml少可读性比xml稍差,但格式化后也很可观与JavaScript交互比xml方便速度比xml快拥有与xml同样多的解析方式大概了解了JSON,下面将介绍在Android中通过采用android内置的org.json包,android3.0新出的JsonReader,google提供的gson解析json这三种常用的方式解析json;这里笔者只介绍前两种解析方式。二、准备json数据要学习怎么解析json,咋们先要得到json数据,得到json数据方式有很多种,比如:webservice接口api,自己写个服务器端,或者自己在代码中写一个json格式的字符串。下面我们将通过金山词霸开放平台为我们提供的每日一句的api接口演示三种解析json的方法。要解析json,我们得先知道要解析json的格式及内容,我们先用浏览器访问每日有一句api接口看看返回的数据。{"sid":"2436","tts":"http:\/\/\/admin\/tts\/2016-12-06-day.mp3","content":"Don'tmakeapromisewhenyouareinJoy.Don'treplywhenyouareSad.Don'ttakedecisionswhenyouareAngry.ThinkTwice.ActWise.","note":"\u5f53\u4f60\u559c\u60a6\u65f6\uff0c\u4e0d\u8981\u8f7b\u6613\u5730\u627f\u8bfa\u3002\u5f53\u4f60\u60b2\u4f24\u65f6\uff0c\u4e0d\u8981\u8f7b\u6613\u5730\u56de\u590d\u3002\u5f53\u4f60\u6124\u6012\u65f6\uff0c\u4e0d\u8981\u8f7b\u6613\u505a\u51fa\u51b3\u5b9a\u3002\u4e09\u601d\u800c\u540e\u884c\uff0c\u660e\u667a\u4e4b\u6cd5\u3002","love":"1066","translation":"\u8bcd\u9738\u5c0f\u7f16\uff1a\u8fd9\u4e09\u53e5\u8bdd\u5c0f\u7f16\u89c9\u5f97\u5728\u751f\u6d3b\u4e2d\u771f\u7684\u53d7\u76ca\u65e0\u7a77\uff0c\u7279\u522b\u662f\u7b2c\u4e00\u53e5\u548c\u7b2c\u4e09\u53e5\u3002\u4eba\u4f1a\u56e0\u4e3a\u559c\u60a6\u51b2\u660f\u5934\u8111\u8bf4\u5927\u8bdd\u6216\u8005\u662f\u778e\u8bb8\u8bfa\uff0c\u6700\u540e\u53c8\u505a\u4e0d\u5230\u3002\u8fd9\u6837\u6b21\u6570\u591a\u4e86\u5468\u56f4\u7684\u4eba\u5c31\u6ca1\u6709\u4eba\u613f\u610f\u76f8\u4fe1\u4f60\u8bf4\u7684\u8bdd\uff0c\u6574\u4e2a\u4eba\u7684\u5206\u91cf\u5728\u670b\u53cb\u4e2d\u4f1a\u8d8a\u6765\u8d8a\u4f4e\u3002\u5f53\u4f60\u6124\u6012\u7684\u65f6\u5019\u5462\uff0c\u4e5f\u5343\u4e07\u4e0d\u8981\u505a\u51fa\u4ec0\u4e48\u51b3\u5b9a\uff0c\u56e0\u4e3a\u5982\u8bba\u4f60\u505a\u51fa\u4ec0\u4e48\u51b3\u5b9a\u4e4b\u540e\u57fa\u672c\u90fd\u4f1a\u975e\u5e38\u540e\u6094\uff01\u6240\u4ee5\u5982\u679c\u5927\u5bb6\u771f\u7684\u5f88\u6c14\u6124\u4e5f\u8981\u7ed9\u81ea\u5df1\u4e00\u4e2a\u7f13\u51b2\u7684\u65f6\u95f4\uff0c\u518d\u51b3\u5b9a\u4e0b\u4e00\u6b65\u600e\u4e48\u505a~","picture":"http:\/\/\/news\/word\/20161206.jpg","picture2":"http:\/\/\/news\/word\/big_20161206b.jpg","caption":"\u8bcd\u9738\u6bcf\u65e5\u4e00\u53e5","dateline":"2016-12-06","s_pv":"0","sp_pv":"0","tags":[{"id":null,"name":null}],"fenxiang_img":"http:\/\/\/web\/news\/longweibo\/imag\/2016-12-06.jpg"}11这是什么东西,看不懂是不是?没关系,这里有一个格式化json数据的工具,格式化之后的json就非常可观了,HiJson32位和64位下载使用HiJson格式化json数据如下图所示,格式化后的字符json数据就相当可观了。这是格式化后的json数据:{"caption":"词霸每日一句","content":"Don'tmakeapromisewhenyouareinJoy.Don'treplywhenyouareSad.Don'ttakedecisionswhenyouareAngry.ThinkTwice.ActWise.","dateline":"2016-12-06","fenxiang_img":"/web/news/longweibo/imag/2016-12-06.jpg","love":"1066","note":"当你喜悦时,不要轻易地承诺。当你悲伤时,不要轻易地回复。当你愤怒时,不要轻易做出决定。三思而后行,明智之法。","picture":"/news/word/20161206.jpg","picture2":"/news/word/big_20161206b.jpg","s_pv":"0","sid":"2436","sp_pv":"0","tags":[{}],"translation":"词霸小编:这三句话小编觉得在生活中真的受益无穷,特别是第一句和第三句。人会因为喜悦冲昏头脑说大话或者是瞎许诺,最后又做不到。这样次数多了周围的人就没有人愿意相信你说的话,整个人的分量在朋友中会越来越低。当你愤怒的时候呢,也千万不要做出什么决定,因为如论你做出什么决定之后基本都会非常后悔!所以如果大家真的很气愤也要给自己一个缓冲的时间,再决定下一步怎么做~","tts":"/admin/tts/2016-12-06-day.mp3"}注意:由于今天金山提供的json数据tags数组中无内容,所以笔者选择往期的json数据讲解,笔者使用这份json数据举例。{"caption":"词霸每日一句","content":"Youaspiretodogreatthings?Beginwithlittleones.","dateline":"2015-12-07","fenxiang_img":"/web/news/longweibo/imag/2015-12-07.jpg","love":"2437","note":"想成就大事,就要从小事开始。(AugustineofHippo)","picture":"/news/word/2015-12-07.jpg","picture2":"/news/word/big_2015-12-07b.jpg","s_pv":"6694","sid":"1683","sp_pv":"121","tags":[{"id":"13","name":"名人名言"},{"id":"16","name":"治愈系"}],"translation":"拥有好心情的最佳方式就是“干正事”。学会了规定的单词,读完了必读的书,收尾了工作,锻炼没有偷懒…那么遇到态度不好的出租司机,多收钱的看车大妈,排队加塞的无良青年也会一笑置之,心中充实,才有底气快乐。【关注词霸小妹微信(微信号:ijinshanciba),有惊喜呦!】","tts":"/admin/tts/2015-12-07-day.mp3"}三、解析json数据方式一:使用org.json包解析/***通过org.json解析json*@paramjsonStrjson字符串*@throwsJSONException格式不对,转换异常*/publicstaticSentenceparseJsonByOrgJson(StringjsonStr)throwsJSONException{//使用该方法解析思路,遇到大括号用JsonObject,中括号用JsonArray//第一个是大括号{}JSONObjectjsonObj=newJSONObject(jsonStr);//新建Sentence对象Sentencesentence=newSentence();//以下是体力活Stringcaption=jsonObj.getString("caption");Stringcontent=jsonObj.getString("content");Stringdateline=jsonObj.getString("dateline");Stringfenxiang_img=jsonObj.getString("fenxiang_img");Stringlove=jsonObj.getString("love");Stringnote=jsonObj.getString("note");Stringpicture=jsonObj.getString("picture");Stringpicture2=jsonObj.getString("picture2");Strings_pv=jsonObj.getString("s_pv");Stringsp_pv=jsonObj.getString("sp_pv");Stringtranslation=jsonObj.getString("translation");Stringtts=jsonObj.getString("tts");sentence.caption=caption;sentence.content=content;sentence.dateline=dateline;sentence.fenxiang_img=fenxiang_img;sentence.love=love;sentence.note=note;sentence.picture=picture;sentence.picture2=picture2;sentence.s_pv=s_pv;sentence.sp_pv=sp_pv;sentence.translation=translation;sentence.tts=tts;//解析关键字tags,它是一个JsonArray,遇到[]JSONArrayjsonArray=jsonObj.getJSONArray("tags");//新建Tag集合List<Sentence.Tag>tags=newArrayList<Sentence.Tag>();for(inti=0;i<jsonArray.length();i++){Sentence.Tagtag=newSentence.Tag();//jsonArray里的每一项都是JsonObjectJSONObjectjsonObject=jsonArray.getJSONObject(i);tag.id=jsonObject.getInt("id");=jsonObject.getString("name");tags.add(tag);}sentence.tags=tags;returnsentence;}使用这种方法解析JSON,看注释,没什么好多的,总结一句话就是:遇到{}用JSONObject,遇到[]用JSONArray,这样你就可以说你精通
org.json解析JSON了。方式二:使用JsonReader解析JSON,JsonReader解析JSON有点类似PULL解析XML,主要的方法还是nextName()将游标后移。/***CallrequiresAPIlevel11(currentminis8):new*android.util.JsonReader通过org.json解析json**@paramjsonStr*json字符串*@throwsException*/@SuppressLint("NewApi")publicstaticSentenceparseJsonByJsonReader(StringjsonStr)throwsException{//新建SentenceSentencesentence=newSentence();//新建Tag集合List<Sentence.Tag>tags=newArrayList<Sentence.Tag>();JsonReaderreader=newJsonReader(newStringReader(jsonStr));//遇到{,开始解析对象reader.beginObject();while(asNext()){Stringname=reader.nextName();if("caption".equals(name)){sentence.caption=reader.nextString();}if("content".equals(name)){sentence.content=reader.nextString();}if("dateline".equals(name)){sentence.dateline=reader.nextString();}if("fenxiang_img".equals(name)){sentence.fenxiang_img=reader.nextString();}if("love".equals(name)){sentence.love=reader.nextString();}if("note".equals(name)){sentence.note=reader.nextString();}if("picture".equals(name)){sentence.picture=reader.nextString();}if("picture2".equals(name)){sentence.picture2=reader.nextString();}if("s_pv".equals(name)){sentence.s_pv=reader.nextString();}if("sid".equals(name)){sentence.sid=reader.nextString();}if("sp_pv".equals(name)){sentence.sp_pv=reader.nextString();}if("translation".equals(name)){sentence.translation=reader.nextString();}if("tts".equals(name)){sentence.tts=reader.nextString();}if("tags".equals(name)){//遇到[,开始解析数组reader.beginArray();while(reader.hasNext()){//遇到{,开始解析对象reader.beginObject();Sentence.Tagtag=newSentence.Tag();if("id".equals(reader.nextName())){tag.i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- ICU脓毒血症的护理措施
- 幼儿园网络安全管理培训
- 幼犬术后护理常规
- 护理学基础知识培训
- 起重作业安全培训
- 安全教育网课
- 2025年互联网广告精准投放算法效果评估与广告投放效果效果评估创新报告
- 肿瘤登记随访方法
- 2025年工业互联网平台自然语言处理技术赋能工业生产报告
- 储能系统在智能电网中的应用与系统稳定性研究报告
- 2023年泸州市文化和旅游系统事业单位招聘笔试模拟试题及答案
- 医疗器械行业市场部人员岗位职责
- (中医内科)高级、副高级职称考试模拟试题及答案
- 跌倒坠床原因分析预防措施
- 部编版小学道德与法治三年级下册期末质量检测试卷【含答案】5套
- 弱电施工安全技术交底
- DB21T 3354-2020 辽宁省绿色建筑设计标准
- 安全生产知识应知应会
- 08S305-小型潜水泵选用及安装图集
- 体育器材采购设备清单
- 二手车鉴定评估报告书最终
评论
0/150
提交评论