Json解析之-实际开发中的特殊需求处理(手动解析-JSONObject和JSONArray来处理)

对于任何的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\":\"[email protected]\"},\"Host\":{\"ID\":\"29\",\"LoginName\":\"gm3\",\"Name\":\"总经理C\",\"Email\":\"\"},\"Recorder\":{\"ID\":\"26\",\"LoginName\":\"gm1\",\"Name\":\"总经理A\",\"Email\":\"[email protected]\"},\"Members\":[{\"ID\":\"26\",\"LoginName\":\"gm1\",\"Name\":\"总经理A\",\"Email\":\"[email protected]\"},{\"ID\":\"28\",\"LoginName\":\"gm2\",\"Name\":\"总经理B\",\"Email\":\"[email protected]\"},{\"ID\":\"29\",\"LoginName\":\"gm3\",\"Name\":\"总经理C\",\"Email\":\"\"}],\"Attendance\":[{\"ID\":\"29\",\"LoginName\":\"gm3\",\"Name\":\"总经理C\",\"Email\":\"\"}],\"Absence\":[{\"LoginName\":\"gm1\",\"Name\":\"总经理A\",\"Email\":\"[email protected]\"},{\"LoginName\":\"gm2\",\"Name\":\"总经理B\",\"Email\":\"[email protected]\"}]},\"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:[email protected]
        LoginName:gm1
        Name总经理A
    Members--Members:
        Email:[email protected]
        LoginName:gm2
        Name总经理B
    Members--Members:
        Email:
        LoginName:gm3
        Name总经理C

源代码Demo下载

发布了74 篇原创文章 · 获赞 58 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/Jason_996/article/details/78039799
今日推荐