JSON的各种解析
JSON是对象类型解析
- 数据是 {“name”:”zhangsanfeng”,”age”:3,”sex”:”nv”}
protected User readJsonObject(String jsonData) { // 内置解析方法JSONObject User bean = null; try { JSONObject jsonObject = new JSONObject(jsonData); String xname = jsonObject.getString("name"); int xage = jsonObject.getInt("age"); String xsex = jsonObject.getString("sex"); bean = new User(xname, xage, xsex); } catch (Exception e) { e.printStackTrace(); } return bean; }
JSON是数组类型解析
- 数据是
[ {"name":"zhangsanfeng","age":3,"sex":"nv"}, {"name":"zhaobenshan","age":2,"sex":"renyao"} ] protected List<User> readJsonArray(String jsonData) { // 内置解析方法JSONObject List<User> users = new ArrayList<User>(); try { JSONArray jsonArray = new JSONArray(jsonData); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String xname = jsonObject.getString("name"); int xage = jsonObject.getInt("age"); String xsex = jsonObject.getString("sex"); User user = new User(xname, xage, xsex); users.add(user); } } catch (Exception e) { e.printStackTrace(); } return users; }
JSON是综合类型解析(对象中包含数组,数组中包含对象)
数据是
{ "error_code": 0, "reason": "查询成功!", "result": { "future": [ { "date": "20140804", "temperature": "28℃~36℃", "weather": "晴转多云", "weather_id": { "fa": "00", "fb": "01" }, "week": "星期一", "wind": "南风3-4级" }, { "date": "20140805", "temperature": "28℃~36℃", "weather": "晴转多云", "weather_id": { "fa": "00", "fb": "01" }, "week": "星期二", "wind": "东南风3-4级" }, { "date": "20140806", "temperature": "27℃~35℃", "weather": "晴转多云", "weather_id": { "fa": "00", "fb": "01" }, "week": "星期三", "wind": "东南风3-4级" }, { "date": "20140807", "temperature": "27℃~34℃", "weather": "多云", "weather_id": { "fa": "01", "fb": "01" }, "week": "星期四", "wind": "东南风3-4级" }, "resultcode": "200" } protected List<Future> readJsonObjArr(String jsonData) { // 内置解析方法JSONObject List<Future> futures = new ArrayList<Future>(); try { JSONObject jsonObject = new JSONObject(jsonData); JSONObject result = jsonObject.getJSONObject("result"); JSONArray jsonArray = result.getJSONArray("future"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject future = jsonArray.getJSONObject(i); String xdate = future.getString("date"); String xtemperature = future.getString("temperature"); String xweather = future.getString("weather"); String xweek = future.getString("week"); String xwind = future.getString("wind"); Future f = new Future(xdate, xtemperature, xweather, xweek, xwind); futures.add(f); } } catch (Exception e) { e.printStackTrace(); } return futures; }
用框架对JSON解析
对象
protected User readJsonObject(String jsonData) { // 内置解析方法JSONObject,ctrl+k User bean = null; bean = JsonUtil.parseJsonToBean(jsonData, User.class); return bean; }
数组
users = (List<User>) JsonUtil.parseJsonToList(jsonData, new TypeToken<List<User>>(){}.getType());
综合
protected List<Future> readJsonObjArr(String jsonData) { // 内置解析方法JSONObject List<Future> futures = new ArrayList<Future>(); String result = JsonUtil.getFieldValue(jsonData, "result"); String future = JsonUtil.getFieldValue(result, "future"); JSONArray jsonArray; try { jsonArray = new JSONArray(future); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String xdate = jsonObject.getString("date"); String xtemperature = jsonObject.getString("temperature"); String xweather = jsonObject.getString("weather"); String xweek = jsonObject.getString("week"); String xwind = jsonObject.getString("wind"); Future f = new Future(xdate, xtemperature, xweather, xweek, xwind); futures.add(f); } } catch (Exception e) { e.printStackTrace(); } return futures; }