Json解析之-实际开发中的特殊需求处理(手动解析-JSONObject和JSONArray来处理)
2017-09-20 13:33
351 查看
对于任何的Json数据都可以用这个原生方法来解析:(当然还有第一种解析方式,请查看:http://blog.csdn.net/jason_996/article/details/78039153)
用(org.json.JSONArray和org.json.JSONObject的包):
1,遇到{}表示对象,用JSONObject来处理
2,遇到[]表示数组,用JSONArray来处理
下面是Json数据:
解析代码:(也是只解析了不同级的,剩下的学习中去完成)
输出结果:
源代码Demo下载
用(org.json.JSONArray和org.json.JSONObject的包):
1,遇到{}表示对象,用JSONObject来处理
2,遇到[]表示数组,用JSONArray来处理
下面是Json数据:
private String jsonString = "{\"Members\":{\"Owner\":{\"ID\":\"26\",\"LoginName\":\"gm1\",\"Name\":\"总经理A\",\"Email\":\"uwa@qq.com\"},\"Host\":{\"ID\":\"29\",\"LoginName\":\"gm3\",\"Name\":\"总经理C\",\"Email\":\"\"},\"Recorder\":{\"ID\":\"26\",\"LoginName\":\"gm1\",\"Name\":\"总经理A\",\"Email\":\"aa@qq.com\"},\"Members\":[{\"ID\":\"26\",\"LoginName\":\"gm1\",\"Name\":\"总经理A\",\"Email\":\"wa@qq.com\"},{\"ID\":\"28\",\"LoginName\":\"gm2\",\"Name\":\"总经理B\",\"Email\":\"zae1s@qq.com\"},{\"ID\":\"29\",\"LoginName\":\"gm3\",\"Name\":\"总经理C\",\"Email\":\"\"}],\"Attendance\":[{\"ID\":\"29\",\"LoginName\":\"gm3\",\"Name\":\"总经理C\",\"Email\":\"\"}],\"Absence\":[{\"LoginName\":\"gm1\",\"Name\":\"总经理A\",\"Email\":\"uw30@qq.com\"},{\"LoginName\":\"gm2\",\"Name\":\"总经理B\",\"Email\":\"zdps5@qq.com\"}]},\"Room\":{\"MeetingID\":\"6fa7eef5-6735-4fb1-a992-8088250be948\",\"MeetingRoomID\":\"2ebbe73b-bee4-4a9e-81c9-f8ffc6ca1149\",\"Address\":\"金融港-302会议室\",\"Date\":\"2017-09-14\",\"Text\":\"2017-09-14 14:00-15:00\",\"Value\":\"[14:00][14:30]\"},\"Attachments\":{\"Items\":[{\"Actor\":\"总经理A\",\"File\":\"1503808491.zip\",\"Url\":\"http://aaa.com/tory/MeetAttents/808491.zip\",\"Time\":\"2017-09-14 15:23\"}]},\"ID\":\"6fa7eef5-735-4f1-a992-8088250be948\",\"Type\":\"专题协调会议\",\"Title\":\"就像在8888\",\"Address\":\"金融港-302会议室\",\"Time\":\"2017-09-14 14:00-15:00\",\"Note\":\"好想到你 \",\"Status\":\"已结束\",\"Author\":\"总经理A\",\"CreatedTime\":\"2017-09-14 14:48\",\"QrCode\":\"eyJ0eXBlIjozLCJpZCI6IjZmYThOTkyLTgwODgCx5YOP5ZyoODg4OCJ9\",\"Action\":\"[VIEW][RECORDER]\"}";
解析代码:(也是只解析了不同级的,剩下的学习中去完成)
private void parseJsonTwo() { String parseStringTwo = "解析:\n"; JSONObject jsonObject = null; try { jsonObject = new JSONObject(jsonString); //一级 String action = jsonObject.optString("Action"); String id = jsonObject.optString("ID"); String type = jsonObject.optString("Type"); String title = jsonObject.optString("Title"); String address = jsonObject.optString("Address"); parseStringTwo += "Action:" + action + "\nID:" + id + "\nType:" + type + "\nTitle:" + title + "\nAddress:" + address + "\n"; //二级,以Attachments为例 JSONObject attachments = jsonObject.getJSONObject("Attachments"); JSONArray items = attachments.getJSONArray("Items"); for (int i = 0; i < items.length(); i++) { JSONObject item = items.getJSONObject(i); String actor = item.optString("Actor"); String file = item.optString("File"); parseStringTwo += "Attachments--:\n" + "Actor:" + actor + "\nFile:" + file + "\n"; } //三级,以Members--Members为例 JSONObject membersObj = jsonObject.getJSONObject("Members"); JSONArray membersArr = membersObj.getJSONArray("Members"); for (int ii = 0; ii < membersArr.length(); ii++) { JSONObject membersItemObj = membersArr.getJSONObject(ii); String email = membersItemObj.optString("Email"); String loginName = membersItemObj.optString("LoginName"); String name = membersItemObj.optString("Name"); parseStringTwo += "Members--Members:\n" + "Email:" + email + "\nLoginName:" + loginName + "\nName" + name + "\n"; } } catch (JSONException e) { e.printStackTrace(); } tv.setText(parseStringTwo); }
输出结果:
解析: Action:[VIEW][RECORDER] ID:6fa7eef5-735-4f1-a992-8088250be948 Type:专题协调会议 Title:就像在8888 Address:金融港-302会议室 Attachments--: Actor:总经理A File:1503808491.zip Members--Members: Email:wa@qq.com LoginName:gm1 Name总经理A Members--Members: Email:zae1s@qq.com LoginName:gm2 Name总经理B Members--Members: Email: LoginName:gm3 Name总经理C
源代码Demo下载
相关文章推荐
- Json转换利器Gson之实例五-实际开发中的特殊需求处理(手动解析-TypeToken)
- Json转换利器Gson之-实际开发中的特殊需求处理(手动解析-TypeToken处理)
- Json转换利器Gson之实例五-实际开发中的特殊需求处理
- 【转】Json转换利器Gson之实例四-实际开发中的特殊需求处理
- Gson解析(5)——实际开发中的特殊需求处理
- Json转换利器Gson之实例五-实际开发中的特殊需求处理
- Json转换利器Gson之实例五-实际开发中的特殊需求处理
- Json转换利器Gson之实例五-实际开发中的特殊需求处理
- Json转换利器Gson之实例五-实际开发中的特殊需求处理
- Json转换利器Gson之实例五-实际开发中的特殊需求处理
- Json转换利器Gson之实例五-实际开发中的特殊需求处理
- Gson之实例五-实际开发中的特殊需求处理
- Gson-----8、实际开发中的特殊需求处理
- Json解析异常处理方式(JSONException: Value of type java.lang.String cannot be converted to JSONObject)
- 用JSONObject解析和处理json数据
- json 的解析-使用Android中的JSONObject和JSONArray解析json数据,gson中的JsonReader解析json数据
- Android开发-Fragment JsonObject JsonArray 综合运用-AndroidStudio
- IDEAL葵花宝典:java代码开发规范插件:GsonFormat插件将JSONObject格式的String 解析成实体
- json解析时自动判断是object还是array
- 百度天气api开发 全解析xml和json格式 使用json-lib jsonObject、 Gson 方式把json 转换成 java对象