Android 中對(duì)JSON數(shù)據(jù)解析實(shí)例代碼
Android 中對(duì)JSON數(shù)據(jù)解析
在Android的網(wǎng)絡(luò)編程中,JSON是比XML使用更為廣泛的數(shù)據(jù)傳輸機(jī)制。在許多的http網(wǎng)絡(luò)請(qǐng)求或接口調(diào)用中,返回的很多都是JSON。所以學(xué)會(huì)解析JSON是學(xué)會(huì)Android的基本技能。
簡(jiǎn)單介紹下JSON,JSON是輕量級(jí)的文本數(shù)據(jù)交換格式,獨(dú)立于語(yǔ)言和平臺(tái)。比XML更小,更快,更易解析。JSON是用鍵值對(duì)來(lái)保存數(shù)據(jù)的。JSON保存的值可以是數(shù)字、字符串、布爾值、數(shù)組和對(duì)象。
廢話(huà)少說(shuō),直接上代碼。下面對(duì)以下JOSN進(jìn)行解析:
{ "language":[ { "id":1, "name":"Java", "ide":"Eclipse" }, { "id":2, "name":"C++", "ide":"Visual Studio" } ] }
在該實(shí)驗(yàn)中,是把該JSON保存為language.json文件并放置在assets文件夾下。在實(shí)際的項(xiàng)目開(kāi)發(fā)中,JSON一般是http請(qǐng)求后由服務(wù)器返回的。具體實(shí)現(xiàn)代碼如下:
try { InputStreamReader inputStreamReader = new InputStreamReader(getAssets().open("languages.json"), "UTF-8");//使用utf-8的編碼方式讀取json;并新建該輸入流; BufferedReader bufferedReader = new BufferedReader(inputStreamReader);//使用BufferReader讀取輸入流中的數(shù)據(jù); String line; StringBuilder stringBuilder = new StringBuilder();//所有讀取的json放到StringBuilder中,這里也可以使用StringBuffer,效果一樣; while ((line = bufferedReader.readLine()) != null) { stringBuilder.append(line); } bufferedReader.close();//按相反的順序關(guān)閉流; inputStreamReader.close(); //以下開(kāi)始進(jìn)行json解析; JSONObject language = new JSONObject(stringBuilder.toString());//每一個(gè){}花括號(hào)的內(nèi)容就是一個(gè)JSON對(duì)象; JSONArray array = language.getJSONArray("language");//獲取language這個(gè)對(duì)象里面的JSON數(shù)組,因?yàn)槊恳粋€(gè)[]中括號(hào)的內(nèi)容就是一個(gè)JSON數(shù)組,數(shù)組內(nèi)可能包含多個(gè)JSON對(duì)象; for (int i = 0; i < array.length(); i++) {//循環(huán)遍歷該數(shù)組; JSONObject item = array.getJSONObject(i);//建立數(shù)組中的對(duì)象; text.append(item.getInt("id") + " " + item.getString("name") + " " + item.getString("ide"));//根據(jù)鍵值對(duì)獲取屬性值; text.append("\n"); } } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); }
程序運(yùn)行后,截圖如下:
至此,已經(jīng)成功完成對(duì)JSON字符串的解析。個(gè)人對(duì)XML解析和JSON解析的理解就像是剝洋蔥,是一層一層往里面進(jìn)行解析,只要搞清楚邏輯關(guān)系,就不會(huì)有問(wèn)題。JSON有時(shí)候會(huì)碰到3層,4層的循環(huán)嵌套,會(huì)比較麻煩,只要按照步驟進(jìn)行,就不會(huì)出錯(cuò)。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Android編程簡(jiǎn)單解析JSON格式數(shù)據(jù)的方法示例
- Android使用OKHTTP解析JSON數(shù)據(jù)的實(shí)例代碼
- android JSON解析數(shù)據(jù) android解析天氣預(yù)報(bào)
- Android解析json數(shù)據(jù)示例代碼(三種方式)
- Android編程實(shí)現(xiàn)根據(jù)經(jīng)緯度查詢(xún)地址并對(duì)獲取的json數(shù)據(jù)進(jìn)行解析的方法
- Android之解析JSON數(shù)據(jù)示例(android原生態(tài),F(xiàn)astJson,Gson)
- Android json數(shù)據(jù)解析詳解及實(shí)例代碼
- Android系列---JSON數(shù)據(jù)解析的實(shí)例
- Android利用Gson解析嵌套多層的Json的簡(jiǎn)單方法
- Android M(6.x)使用OkHttp包解析和發(fā)送JSON請(qǐng)求的教程
- Android解析JSON數(shù)據(jù)的方法分析
- Android json解析及簡(jiǎn)單例子
- android解析JSON數(shù)據(jù)
- Android中g(shù)son、jsonobject解析JSON的方法詳解
- Android解析json數(shù)組對(duì)象的方法及Apply和數(shù)組的三個(gè)技巧
- Android隨手筆記44之JSON數(shù)據(jù)解析
- Android學(xué)習(xí)筆記45之gson解析json
- android原生JSON解析實(shí)例
相關(guān)文章
Android使用系統(tǒng)自帶的相機(jī)實(shí)現(xiàn)一鍵拍照功能
這篇文章主要介紹了Android使用系統(tǒng)自帶的相機(jī)實(shí)現(xiàn)一鍵拍照功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2017-01-01Android 中HttpURLConnection與HttpClient使用的簡(jiǎn)單實(shí)例
這篇文章介紹了Android 中HttpURLConnection與HttpClient使用的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2013-10-10Android實(shí)現(xiàn)壓縮字符串的方法示例
最近在做Android開(kāi)發(fā),遇到了需要壓縮字符串的功能,下面這篇文章主要給大家介紹了Android實(shí)現(xiàn)壓縮字符串的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08在Android Studio中設(shè)置Button透明度的方法詳解
本文將介紹在Android Studio中如何設(shè)置Button的透明度,首先,我們將展示實(shí)現(xiàn)該功能的整個(gè)流程,并使用表格列出每個(gè)步驟,然后,我們將詳細(xì)說(shuō)明每個(gè)步驟需要做什么,并提供相應(yīng)的代碼和注釋,需要的朋友可以參考下2023-09-09Android中監(jiān)聽(tīng)軟鍵盤(pán)輸入的使用方式
今天我們來(lái)討論一下Android中監(jiān)聽(tīng)軟鍵盤(pán)輸入的使用方式,它允許用戶(hù)輸入文本和執(zhí)行其他操作,但是,有時(shí)候我們需要在用戶(hù)輸入文本時(shí)進(jìn)行一些特殊的處理,比如實(shí)時(shí)驗(yàn)證輸入內(nèi)容、限制輸入字符的類(lèi)型等,因此,了解如何監(jiān)聽(tīng)軟鍵盤(pán)輸入是非常重要的2023-10-10Android編程判斷橫屏、豎屏及設(shè)置橫豎屏的方法
這篇文章主要介紹了Android編程判斷橫屏、豎屏及設(shè)置橫豎屏的方法,結(jié)合實(shí)例形式分析了Android針對(duì)橫豎屏的判斷、計(jì)算、設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下2018-01-01Android 中動(dòng)態(tài)加載.jar的實(shí)現(xiàn)步驟
本文介紹動(dòng)態(tài)加載 .jar的實(shí)現(xiàn)步驟,這將對(duì)你的android開(kāi)發(fā)很有幫助,剛興趣的朋友可以了解下哦2013-01-01Android實(shí)現(xiàn)二級(jí)購(gòu)物車(chē)的全選加反選、總價(jià)功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)二級(jí)購(gòu)物車(chē)的全選加反選、總價(jià)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04Android計(jì)算器簡(jiǎn)單邏輯實(shí)現(xiàn)實(shí)例分享
這篇文章主要介紹了Android計(jì)算器簡(jiǎn)單邏輯實(shí)現(xiàn)實(shí)例,有需要的朋友可以參考一下2014-01-01