在開發中,網絡請求和json解析使用的頻率是同樣高的,由於網絡請求返回來的通常都是json(固然還有xml),這裏討論的是json,網絡請求的工具類前面個人博客已經寫過了,這裏給出網址:http://blog.csdn.net/u014727709/article/details/53389840 直接複製就可以使用。php
解析json的方法有不少,我最開始接觸的時候使用的是原生解析,第二種就是Gson解析,還有阿里巴巴的FastJson,JackJson等,這裏看一下如何進行json解析,這裏使用的網絡請求就是上面提到的工具類。
解析這個網址返回的json:http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&page=1&limit=20 這是一個get請求
格式是這樣的:android
{
「ret」: 1,
「data」: [
{
「id」: 「8289」,
「title」: 「油燜大蝦」,
「pic」: 「http://www.qubaobei.com/ios/cf/uploadfile/132/9/8289.jpg「,
「collect_num」: 「1596」,
「food_str」: 「大蝦 蔥 生薑 植物油 料酒」,
「num」: 1596
},
。。。
第一種方法:原生解析ios
首先要分析json的格式,這裏首先是一個json對象(即JsonObject),裏面還嵌套有一個json數組(即JsonArray),jsonarray裏面又是一個json對象。分析清楚那就能夠進行解析了,固然最好的話,仍是要創建一個json所對應的實體類bean,這裏我就不寫了,下面會在提到的。
這裏的result就是網絡請求返回來的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);json
這裏是輸出的結果:
數組
注意:解析json的時候,最使用json裏面對應的數據類型進行解析,這裏我統一使用的是String類型來得到解析的結果。例如:json裏面最後一個num的類型是int,解析的時候能夠int num = jsonObject2.getInt(「num」);
解析出來的結果你能夠存放在你創建的實體類bean裏面,或者存在集合List< HashMap< String, Object>>裏面也能夠,可是通常的話,都是存放在實體類裏面的。markdown
第二種解析方式:Gson解析
Gson解析須要下載gson.jar包,本身去百度下載吧或者下載個人demo裏面就有。
這裏解析就須要給json生成實體類,初學的話建議手寫,熟悉的話可使用Android Studio裏面插件GsonFormat來自動生成,這裏實體類我就不貼出來了,去個人demo裏面看吧。
解析就是一句話的事:
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()+」「);app
第四種解析方式:JackJson解析,一樣和上面相似
MenuBean menuBean;
menuBean = new ObjectMapper().readValue(result, MenuBean.class);
Log.e(「MenuBean—–>」, menuBean.getRet()+」「);
Log.e(「MenuBean—–>」, menuBean.getData().get(0).getPic()+」「);工具
demo下載地址:http://download.csdn.net/detail/u014727709/9717408
轉載自:http://blog.csdn.net/u014727709/article/details/53782931url
歡迎start,歡迎評論,歡迎指正