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\":\"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下载

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值