JSON數據格式分析
發表時間:2020-10-19
發布人:葵宇科技
浏覽次數:30
1、JSON介紹
JSON是一種數據構造比較簡單,輕量級的,易于存儲的數據構造情勢。很便利人的浏覽,也便利機械的編寫和(hé)解析。
JSON是一種完全自力于文(wén)本說話的文(wén)本構造,我們既可(kě)以在js代碼中(zhōng)寫json數據,也能在java、php等說話中(zhōng)應用這種文(wén)本情勢。
2、JSON構造分析
JSON隻有兩種數據構造模型:數組和(hé)對象。數組常用的表示是JSONArray,對象常用的表示是JSONObject。
JSON的存儲結構成取的是鍵值對的情勢表示的,熟悉JAVA開辟的人應當很清跋扈,是實際上是map的存儲方法,一個(gè)key對應一個(gè)value。當然,在不合說話中(zhōng),可(kě)能懂得方法上會有不合的差别,的數據構造中(zhōng)可(kě)能被懂得為數據字典,C中(zhōng)可(kě)能被懂得為構造體等數據類型。關(guān)于這個(gè),等下(xià)我們會舉例解釋。
3、JSON數據舉例
可(kě)能有的人對json數據情勢并不熟悉,這裡給出一個(gè)json數據的示例,這是大年夜一段代碼中(zhōng)朝長進步出來的内容,可(kě)能大年夜家看起來會認為很奇怪,然則這是一個(gè)完全的json格式的字符串,包含了json定義的兩中(zhōng)數據格式,數組和(hé)對象:
{ "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": "漢子(zǐ)在年青的時刻都欲望能擁有一個(gè)花(huā)枝飄揚,外表光鮮亮(liàng)麗(lì)的那種女人。可(kě)是跟着歲月(yuè)的沉澱,尤其是當他有了本身的一番事業(yè)和(hé)豐富的人生經曆時,就會發明本身當初的設法主意是多麼竽暌棺稚,因為,一個(gè)根本就不敷!", "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、解析方法
在不合的說話中(zhōng),可(kě)能有不合的解析方法,這裡我們隻評論辯論在Android情況中(zhōng)的解析方法,與java中(zhōng)是一緻的。
前面我們說過,JSON是采取的map集合情勢的封裝,是鍵值對的情勢,那麼我們在掏出數據的時刻,就會采取get辦法,如(rú)下(xià)兩句代碼:
JSONObject jsonObject = new JSONObject(jsonString); JSONObject msgJsonObject = jsonObject.getJSONObject("msg");這兩句代碼的意思是說,我們将獲得的json字符串,實例化成為一個(gè)json對象,然後在這個(gè)json對象中(zhōng),獲取獲得msg這個(gè)對象。
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這個(gè)json對象中(zhōng),獲得一個(gè)名為photos的json數組對象,然後将之存儲在一個(gè)集合中(zhōng)。
product.getString("title")這一句代碼就比較簡單輕易懂得了,意思是獲取一個(gè)title的對象,而這個(gè)對象是一個(gè)String類型的對象。
5、總結
在膳绫擎的json解析中(zhōng),我們隻是簡單的采取了一些比較重要的代碼片段,并沒有完全的┞飯示若何解析一段代碼,這裡有兩個(gè)問(wèn)題須要留意:
(1)、在處理json字符串的時刻,須要處理一個(gè)異常,名為JSONException,平日是json的數據格式纰謬或者數據不完全。
(2)、在獲取json字符串中(zhōng)的值的時刻,如(rú)不雅試用get獲取,可(kě)能會出現該字符串不存在而導緻報錯的情況,可(kě)以試用opt獲取,代碼如(rú)下(xià):
product.optString("title")然則這裡會出現一個(gè)問(wèn)題,那就是如(rú)不雅沒有title這個(gè)字符串對象,這句話也是不會報錯的,然則法度榜樣的履行結不雅卻不是我們預期那樣的。