您好,登錄后才能下訂單哦!
Android 中對JSON數據解析
在Android的網絡編程中,JSON是比XML使用更為廣泛的數據傳輸機制。在許多的http網絡請求或接口調用中,返回的很多都是JSON。所以學會解析JSON是學會Android的基本技能。
簡單介紹下JSON,JSON是輕量級的文本數據交換格式,獨立于語言和平臺。比XML更小,更快,更易解析。JSON是用鍵值對來保存數據的。JSON保存的值可以是數字、字符串、布爾值、數組和對象。
廢話少說,直接上代碼。下面對以下JOSN進行解析:
{ "language":[ { "id":1, "name":"Java", "ide":"Eclipse" }, { "id":2, "name":"C++", "ide":"Visual Studio" } ] }
在該實驗中,是把該JSON保存為language.json文件并放置在assets文件夾下。在實際的項目開發中,JSON一般是http請求后由服務器返回的。具體實現代碼如下:
try { InputStreamReader inputStreamReader = new InputStreamReader(getAssets().open("languages.json"), "UTF-8");//使用utf-8的編碼方式讀取json;并新建該輸入流; BufferedReader bufferedReader = new BufferedReader(inputStreamReader);//使用BufferReader讀取輸入流中的數據; String line; StringBuilder stringBuilder = new StringBuilder();//所有讀取的json放到StringBuilder中,這里也可以使用StringBuffer,效果一樣; while ((line = bufferedReader.readLine()) != null) { stringBuilder.append(line); } bufferedReader.close();//按相反的順序關閉流; inputStreamReader.close(); //以下開始進行json解析; JSONObject language = new JSONObject(stringBuilder.toString());//每一個{}花括號的內容就是一個JSON對象; JSONArray array = language.getJSONArray("language");//獲取language這個對象里面的JSON數組,因為每一個[]中括號的內容就是一個JSON數組,數組內可能包含多個JSON對象; for (int i = 0; i < array.length(); i++) {//循環遍歷該數組; JSONObject item = array.getJSONObject(i);//建立數組中的對象; text.append(item.getInt("id") + " " + item.getString("name") + " " + item.getString("ide"));//根據鍵值對獲取屬性值; text.append("\n"); } } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); }
程序運行后,截圖如下:
至此,已經成功完成對JSON字符串的解析。個人對XML解析和JSON解析的理解就像是剝洋蔥,是一層一層往里面進行解析,只要搞清楚邏輯關系,就不會有問題。JSON有時候會碰到3層,4層的循環嵌套,會比較麻煩,只要按照步驟進行,就不會出錯。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。