JSON数据格式分析
发表时间:2020-10-19
发布人:葵宇科技
浏览次数:48
1、JSON介绍
JSON是一种数据构造比较简单,轻量级的,易于存储的数据构造情势。很便利人的浏览,也便利机械的编写和解析。
JSON是一种完全自力于文本说话的文本构造,我们既可以在js代码中写json数据,也能在java、php等说话中应用这种文本情势。
2、JSON构造分析
JSON只有两种数据构造模型:数组和对象。数组常用的表示是JSONArray,对象常用的表示是JSONObject。
JSON的存储结构成取的是键值对的情势表示的,熟悉JAVA开辟的人应当很清跋扈,是实际上是map的存储方法,一个key对应一个value。当然,在不合说话中,可能懂得方法上会有不合的差别,的数据构造中可能被懂得为数据字典,C中可能被懂得为构造体等数据类型。关于这个,等下我们会举例解释。
3、JSON数据举例
可能有的人对json数据情势并不熟悉,这里给出一个json数据的示例,这是大年夜一段代码中朝长进步出来的内容,可能大年夜家看起来会认为很奇怪,然则这是一个完全的json格式的字符串,包含了json定义的两中数据格式,数组和对象:
{ "id": "20150104A000SB00", "thumbnails_qqnews": [ "http://inews.gtimg.com/newsapp_ls/0/34260782_150110/0" ], "thumbnails": [ "http://inews.gtimg.com/newsapp_ls/0/34260782_150110/0" ], "articletype": "0", "timestamp": 1420373100, "time": "2015-01-04 20:05:00", "commentid": "1074737367", "url": "http://view.inews.qq.com/a/20150104A000SB00", "title": "武媚娘传奇→武大年夜头传奇", "tag": [ ], "abstract": "汉子在年青的时刻都欲望能拥有一个花枝飘扬,外表光鲜亮丽的那种女人。可是跟着岁月的沉淀,尤其是当他有了本身的一番事业和丰富的人生经历时,就会发明本身当初的设法主意是多么竽暌棺稚,因为,一个根本就不敷!", "author": [ ], "chlid": "1796", "origUrl": "http://m.pengfu.com/content/1127642/", "show_expr": 1, "flag": "0", "picShowType": 0, "chlname": "捧腹网", "chlmrk": "精选搞笑图片,无节操、有内涵、巨险恶、神答复,看点多,笑点多!", "chlsicon": "http://pnewsapp.tc.qq.com/newsapp_ls/0/om_407743_100100/0", "chlicon": "http://pnewsapp.tc.qq.com/newsapp_ls/0/om_407743_100100/0", "source": "捧腹网", "wechat": "pengfuwang001", "PlacementId": "9079537218569440795", "SubAdOn": 0, "commentPlacementId": "", "openAdsComment": 0 }
4、解析方法
在不合的说话中,可能有不合的解析方法,这里我们只评论辩论在Android情况中的解析方法,与java中是一致的。
前面我们说过,JSON是采取的map集合情势的封装,是键值对的情势,那么我们在掏出数据的时刻,就会采取get办法,如下两句代码:
JSONObject jsonObject = new JSONObject(jsonString); JSONObject msgJsonObject = jsonObject.getJSONObject("msg");这两句代码的意思是说,我们将获得的json字符串,实例化成为一个json对象,然后在这个json对象中,获取获得msg这个对象。
JSONArray temp = product.getJSONArray("photos"); int length = temp.length(); for (int i = 0; i < length; i++) { String msg = temp.optString(i); imgList.add(msg); }这段代码的意思是大年夜product这个json对象中,获得一个名为photos的json数组对象,然后将之存储在一个集合中。
product.getString("title")这一句代码就比较简单轻易懂得了,意思是获取一个title的对象,而这个对象是一个String类型的对象。
5、总结
在膳绫擎的json解析中,我们只是简单的采取了一些比较重要的代码片段,并没有完全的┞饭示若何解析一段代码,这里有两个问题须要留意:
(1)、在处理json字符串的时刻,须要处理一个异常,名为JSONException,平日是json的数据格式纰谬或者数据不完全。
(2)、在获取json字符串中的值的时刻,如不雅试用get获取,可能会出现该字符串不存在而导致报错的情况,可以试用opt获取,代码如下:
product.optString("title")然则这里会出现一个问题,那就是如不雅没有title这个字符串对象,这句话也是不会报错的,然则法度榜样的履行结不雅却不是我们预期那样的。