溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何獲取json中的數(shù)據(jù)

發(fā)布時間:2020-09-16 10:39:26 來源:億速云 閱讀:167 作者:小新 欄目:編程語言

小編給大家分享一下如何獲取json中的數(shù)據(jù),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

 JSON是首先一種數(shù)據(jù)結(jié)構(gòu),說白了就是對數(shù)據(jù)的描述,剛剛出現(xiàn)是為了取代XML,可惜并沒有,但是在作為配置文件上,卻是很好,由于它小巧靈活,描述數(shù)據(jù)很好,所以在網(wǎng)絡(luò)上進(jìn)行數(shù)據(jù)傳輸更加方便。
請記住JSON對數(shù)據(jù)的描述形式,既然是形式,那么它的數(shù)據(jù)形式是什么樣的:
對象的描述是: {} 這個表示jsonobject(json對象)
數(shù)組的描述是: [] 表示jsonarray(json數(shù)組)
屬性或值的描述是: “”
連接之間的描述是: :

如何獲取json中的數(shù)據(jù)

示例格式是這樣的:

{ 
“ret”: 1, 
“data”: [ 
{ 
“id”: “8289”, 
“title”: “油燜大蝦”, 
“collect_num”: “1596”, 
“food_str”: “大蝦 蔥 生姜 植物油 料酒”, 
“num”: 1596 
},

第一種方法:原生解析

首先要分析json的格式,這里首先是一個json對象(即JsonObject),里面還嵌套有一個json數(shù)組(即JsonArray),jsonarray里面又是一個json對象。分析清楚那就可以進(jìn)行解析了,當(dāng)然最好的話,還是要建立一個json所對應(yīng)的實(shí)體類bean,。
這里的result就是網(wǎng)絡(luò)請求返回來的json字符串。
JSONObject jsonObject = new JSONObject(result);
JSONArray jsonArray = jsonObject.getJSONArray(“data”);
for (int j = 0; j < jsonArray.length(); j++) {
JSONObject jsonObject2 = jsonArray.getJSONObject(j);
String id = jsonObject2.getString(“id”);
String title = jsonObject2.getString(“title”);
String pic = jsonObject2.getString(“pic”);
String collect_num = jsonObject2.getString(“collect_num”);
String food_str = jsonObject2.getString(“food_str”);
String num = jsonObject2.getString(“num”);
Log.e(“json——->”, id+”,”+title+”,”+pic+”,”+collect_num+”,”+food_str+”,”+num);

第二種解析方式:Gson解析
Gson解析需要下載gson.jar包。
這里解析就需要給json生成實(shí)體類,初學(xué)的話建議手寫,熟悉的話可以使用Android Studio里面插件GsonFormat來自動生成。
解析就是一句話的事:
MenuBean menuBean = new Gson().fromJson(result, MenuBean.class);
Log.e(“MenuBean—–>”, menuBean.getRet()+”“);

第三種解析方式:FastJson和Gson類似的。
MenuBean menuBean = JSON.parseObject(result,MenuBean.class);
Log.e(“MenuBean—–>”, menuBean.getRet()+”“);
Log.e(“MenuBean—–>”, menuBean.getData().get(0).getPic()+”“);

第四種解析方式:JackJson解析,同樣和上面類似
MenuBean menuBean;
menuBean = new ObjectMapper().readValue(result, MenuBean.class);
Log.e(“MenuBean—–>”, menuBean.getRet()+”“);
Log.e(“MenuBean—–>”, menuBean.getData().get(0).getPic()+”“);

以上是如何獲取json中的數(shù)據(jù)的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI