zoukankan      html  css  js  c++  java
  • 对复杂json进行处理

    {"dingtalk_corp_role_list_response":{"result":{"has_more":"false","list":{"role_groups":[{"group_name":"默认","roles":{"roles":[{"id":278146611,"role_name":"主管理员"},{"id":278146612,"role_name":"子管理员"},{"id":278146613,"role_name":"负责人"},{"id":278146614,"role_name":"主管"}]}},{"group_name":"职务","roles":{"roles":[{"id":278146616,"role_name":"财务"},{"id":278146617,"role_name":"人事"},{"id":278146618,"role_name":"出纳"},{"id":278146619,"role_name":"销售"},{"id":278146620,"role_name":"客服"},{"id":278146621,"role_name":"质检"},{"id":278146622,"role_name":"研发"},{"id":278146623,"role_name":"行政"},{"id":278146624,"role_name":"设计"},{"id":278146625,"role_name":"产品"},{"id":278554778,"role_name":"采购"}]}},{"group_name":"岗位","roles":{"roles":[{"id":278146627,"role_name":"普通员工"},{"id":278146628,"role_name":"经理"},{"id":278146629,"role_name":"科长"},{"id":278146630,"role_name":"部长"},{"id":278146631,"role_name":"总监"},{"id":278146632,"role_name":"管理层"},{"id":278146633,"role_name":"高级管理者"},{"id":278146634,"role_name":"总经理"}]}}]}},"request_id":"7iythn3xigry"}}
    

      

    调用接口返回的json如下

    现在要得到的是roles的 role_name和id,具体方法如下,其实还是很简单的,只不过需要耐心点。

    public static List<RoleGroup> getAllRoleList(String access_token,Long size,Long offsize) throws ApiException, OApiResultException{
            DingTalkClient client = new DefaultDingTalkClient("https://eco.taobao.com/router/rest");
            CorpRoleListRequest req = new CorpRoleListRequest();
            List<RoleGroup> list  = new ArrayList<>();
            req.setSize(size);//分页大小
            req.setOffset(offsize);//分页偏移
            CorpRoleListResponse rsp = client.execute(req, access_token);
            JSONObject response = JSON.parseObject(rsp.getBody()); 
            if (response.containsKey("dingtalk_corp_role_list_response")) {
                JSONObject j1 = response.getJSONObject("dingtalk_corp_role_list_response");
                JSONObject j2 = j1.getJSONObject("result");
                JSONObject j3 = j2.getJSONObject("list");
                JSONArray j5 = j3.getJSONArray("role_groups");
                for (int i = 0; i < j5.size(); i++) {
                    JSONObject j6 = j5.getJSONObject(i);
                    JSONObject j7 = j6.getJSONObject("roles");
                    JSONArray j8 = j7.getJSONArray("roles");
                    if(j8!=null){
                    for(int n = 0; n < j8.size(); n++){
                        RoleGroup g = j8.getObject(n, RoleGroup.class);    
                        list.add(g);
                    }}
                }
                return list;
            }
            else {
                throw new OApiResultException("Role");
            }
        }



    package com.alibaba.dingtalk.openapi.demo.role;
    
    
    public class RoleGroup {
        private String id;
        private String role_name;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getRole_name() {
            return role_name;
        }
        public void setRole_name(String role_name) {
            this.role_name = role_name;
        }
    }
  • 相关阅读:
    Android系统源代码下载
    Windows Embedded Compact 7初体验
    windowsmobile 开发环境
    Windows X64汇编入门(1)
    汇编语言的Hello World
    如何构建Win32汇编的编程环境(ONEPROBLEM个人推荐)
    音频视频解决方案:GStreamer/ffmpeg/ffdshow/directshow/vfw
    汇编开发环境
    DirectX
    关于DirectShow SDK 和Windows SDK,及DirectX SDK
  • 原文地址:https://www.cnblogs.com/chenyangwang/p/8279050.html
Copyright © 2011-2022 走看看