日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

解析json串

發布時間:2025/3/17 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解析json串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????使用java進行網頁抓取時,有時會直接獲取到json串,json串要獲取的數據嵌套復雜,這里自己寫一個遞歸的方式進行解析指定名稱的數據,進行記錄,以便日后復用。

????原有json串:

{"total":?3,"class":?"二年級","members":?[{"age":?18,"name":?"張三","course":[{"Chinese":"123","Maths":"121","English":"110"}]},?{"age":?19,"name":?"李四","course":[{"Chinese":"118","Maths":"129","English":"130"}]},?{"age":?18,"name":?"王麻子","course":[{"Chinese":"133","Maths":"111","English":"134"}]}] }

????java遞歸解析方法:

import?org.json.JSONObject; import?org.json.JSONArray;/***?*?@param?returnObject?返回的數據List*?@param?object?傳入的json串*?@param?keys?需要解析的節點數組,按順序組成數組*?@param?index?index==keys.length為基線條件,index起始為0*/ private?static?void?getData(List<Object>?returnObject,Object?object,String[]?keys,int?index){if?(index==keys.length){returnObject.add(object);return;}if?(object?instanceof?JSONObject){if?(!((JSONObject)?object).has(keys[index])){return?;}Object?object1=((JSONObject)?object).get(keys[index]);getData(returnObject,object1,keys,index+1);}?else?if?(object?instanceof?JSONArray){JSONArray?jsonArray=(JSONArray)?object;for?(Object?jsonObject:jsonArray){getData(returnObject,jsonObject,keys,index);}} }

????遞歸調用方法:

public?static?void?main(String[]?args)?{String?jsonStr="{\n"?+"\t\"total\":?3,\n"?+"\t\"class\":?\"二年級\",\n"?+"\t\"members\":?[{\n"?+"\t\t\"age\":?18,\n"?+"\t\t\"name\":?\"張三\",\n"?+"\t\t\"course\":[{\n"?+"\t\t\t\"Chinese\":\"123\",\n"?+"\t\t??\t\"Maths\":\"121\",\n"?+"\t\t??\t\"English\":\"110\"\n"?+"\t\t}]\n"?+"\t},?{\n"?+"\t\t\"age\":?19,\n"?+"\t\t\"name\":?\"李四\",\n"?+"\t\t\"course\":[{\n"?+"\t\t\t\"Chinese\":\"118\",\n"?+"\t\t??\t\"Maths\":\"129\",\n"?+"\t\t??\t\"English\":\"130\"\n"?+"\t\t}]\n"?+"\t},?{\n"?+"\t\t\"age\":?18,\n"?+"\t\t\"name\":?\"王麻子\",\n"?+"\t\t\"course\":[{\n"?+"\t\t\t\"Chinese\":\"133\",\n"?+"\t\t??\t\"Maths\":\"111\",\n"?+"\t\t??\t\"English\":\"134\"\n"?+"\t\t}]\n"?+"\t}]\n"?+"}";List<Object>?returnObject=new?ArrayList<>();getData(returnObject,new?JSONObject(jsonStr),"members,course".split(","),0);System.out.println(returnObject);returnObject=new?ArrayList<>();getData(returnObject,new?JSONObject(jsonStr),"members,course,Chinese".split(","),0);System.out.println(returnObject); } 輸出結果: [[{"Maths":"121","English":"110","Chinese":"123"}],?[{"Maths":"129","English":"130","Chinese":"118"}],?[{"Maths":"111","English":"134","Chinese":"133"}]] [123,?118,?133]


轉載于:https://blog.51cto.com/zuohao1990/2295757

總結

以上是生活随笔為你收集整理的解析json串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。