对复杂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;
    }
}
原文地址:https://www.cnblogs.com/chenyangwang/p/8279050.html