您的位置:首页 > 移动开发 > Objective-C

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数据:

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下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐