json資料解析
阿新 • • 發佈:2019-01-02
[{"name":"音箱狂歡",imgUrl":"http://7mno4h.com2.z0.glb.qiniucdn.com/5608f3b5Nc8d90151.jpg","type":1},{"name":"手機國慶禮","imgUrl":"http://7mno4h.com2.z0.glb.qiniucdn.com/5608eb8cN9b9a0a39.jpg","type":1}]
// 解析json方式:遇到{}就用JsonObject, 遇到[]就用JsonArray 如果json資料最外層是[]不是{} 用gson.jar解析就需要注意了
. 在使用Gson解析json字串的時候,怎麼建立JavaBean 是非常關鍵的。要注意一下三點,
第一. 內部巢狀的類必須是static的,要不然解析會出錯。
第二. 類裡面的屬性名必須跟json欄位裡面的key是一模一樣的。
第三. 內部巢狀的用[], 括起來的部分是一個List, 所以定義為public List<B> b. 而只用{}巢狀的就定義為public C c;
請看如下程式碼:
json字串 :
String json = { "a":"100", "b":[{"b1":"b_value1","b2":"b_value2"}, {"b1":"b_value1","b2":"b_value2"}], "c": {"c1":"c_value1","c2":"c_value2"} }
ArrayList<> mBanners = new ArrayList<>(); try { JSONArray jsonArray = new JSONArray(string); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); BannerBean bean = new BannerBean(); bean.imgUrl = jsonObject.getString("imgUrl"); bean.name = jsonObject.getString("name"); mBanners.add(bean); } } catch (JSONException e) { e.printStackTrace(); }
方式二:gson.jar解析法
Gson gson = new Gson(); Type listType = new TypeToken<List<BannerBean2>>() {}.getType(); ArrayList<BannerBean2> list = gson.fromJson(string, listType); for (int i = 0; i < list.size(); i++) { BannerBean2 bannerBean2 = new BannerBean2(); bannerBean2.name = list.get(i).name; Log.i(TAG, "name>>" + bannerBean2.name); } for (BannerBean2 bean2 : list) { Log.i(TAG, "name=====>>" + bean2.name); BannerBean2 b2= new BannerBean2(); b2.name = bean2.name; Log.i(TAG, "name=====>>" + b2.name); } Type listType2 = new TypeToken<LinkedList<BannerBean2>>() {}.getType(); LinkedList<BannerBean2> list2 = gson.fromJson(string, listType2); for (Iterator iterator = list2.iterator(); iterator.hasNext(); ) { BannerBean2 bean2 = (BannerBean2) iterator.next(); Log.i(TAG, "bean2name>>" + bean2.name); }
public class BannerBean2 { public String name; public String imgUrl; }