解析Json
有了請求,自然會有響應,那我們該如何解析服務端響應返回給我們的Json數據呢?
了解什么是Json
JSON(JavaScript object notation)是一種輕量級的數據交換格式。它是基於ECMAscript的一個子集。JSON采用完全獨立於語言的文本格式,但是也是用的類似於c語言家族的習慣(包括c、c++、c#、java、javascript、perl、Python等)。這些特性是JSON成為理想的數據交換語言。易於人閱讀和編寫,同時也易於機器解析和生成(一般用於提升網絡傳輸速率)。
JSON的語法規則
JSON是JavaScript對象表示語法的子集。
1) 數據在鍵值對中。
2) 數據由逗號分隔
3) 花括號保存對象
4) 方括號保存數組
JSON的值可以是?
1) 數字(整數或浮點數)
2) 字符串(在雙引號中)
3) 邏輯值(true或false)
4) 數組(在方括號中)
5) 對象(在花括號中)
6) null
代碼演示,如何解析JSON格式數據?
1) 使用之前演示HttpGet和HttpPost時,已經寫好的可以得到從服務器返回的JSON格式的字符串的代碼。
調用parseData()方法,傳遞參數result。如下圖:
得到的需要解析的JSON數據如下圖所示:
2) 根據分析JSON數據的格式,這里可以看出JSON格式解析到最里層,得到的是一組一組的對象,對象里面包含name和sex屬性。
所以,在這里構造出一個對應該對象的實體類,並提供對外訪問的getter和setter方法。
3) 這里我們重寫tostring()方法,通過調用此方法,可以打印出該對象的name值和sex值,這樣做是為了待會兒打印出對象的屬性值,展示效果。
4) 由於得到的最里層的member對象的集合,這里采用list包裝。
由於這里提供的這段JSON格式的數據最外層是對象包裝,所以可以采用sun公司原生提供的JSONObject類,傳入對象格式的JSON數據構造一個JOSNObject的對象。
再分析里層的:是一個鍵值對,鍵名為list,值是一個數組,所以我們可以通過鍵名得到這個數組。
調用JSONObject.getJSONArray()方法,傳入鍵名可以得到一個JSONArray對象。
5) 得到了JSONArray數組之后,就可以開始使用for循環遍歷數組了,由於數組的每一項都是一個對象,所以調用JSONArray.getJSONObject(下標)方法,傳入下標,即可得到最里層的JSON格式的對象。
之后,new一個member的對象,設置member的name值和sex值,值可以從最里層的JSON對象通過getString()方法,傳入鍵名得到。
最后,將member對象添加到事先構建好的List列表里面即可。
6) 當然,最后只需要打印出member的屬性值,即可檢驗是否成功解析JSON數據。這里調用之前重寫的toString()方法。
7) 最后看看,運行成功的結果吧!成功的打印出了name和sex屬性值。