ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

封装父子级关系

2021-04-08 17:01:10  阅读:199  来源: 互联网

标签:关系 getDeclaredField 封装 get ParentIdField JSONObject list 父子 JSONArray


    public static JSONArray createTreeJson(List<?> list) throws Exception {
        JSONArray rootArray = new JSONArray();
        for (int i = 0; i < list.size(); i++) {
            Class resource = list.get(i).getClass();
            Object objectResource = list.get(i);
            // 接触私有化限制
            resource.getDeclaredField("parentId").setAccessible(true);
            resource.getDeclaredField("id").setAccessible(true);
            String ParentIdField = resource.getDeclaredField("parentId").get(objectResource).toString();
            if (ParentIdField.equals("0")) {
                //创建子节点分支
                JSONObject rootObj = createBranch(list, objectResource);
                rootArray.add(rootObj);
            }
        }
        return rootArray;
    }

    public static <T> JSONObject createBranch(List<?> list, Object currentNode) throws Exception {
        JSONObject currentObj = (JSONObject) JSONObject.toJSON(currentNode);
        JSONArray childArray = new JSONArray();
        for (int i = 0; i < list.size(); i++) {
            Class newNode = list.get(i).getClass();
            Class currentNodeClass = currentNode.getClass();
            // 解除私有化限制
            String ParentIdField = newNode.getDeclaredField("parentId").get(list.get(i)).toString();
            String idField = currentNodeClass.getDeclaredField("id").get(currentNode).toString();
            if (ParentIdField != null && ParentIdField.compareTo(idField) == 0) {
                JSONObject childObj = createBranch(list, list.get(i));
                childArray.add(childObj);
            }
        }
        if (!childArray.isEmpty()) {
            currentObj.put("children", childArray);
        }
        return currentObj;
    }

 

标签:关系,getDeclaredField,封装,get,ParentIdField,JSONObject,list,父子,JSONArray
来源: https://www.cnblogs.com/huqi96/p/14633277.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有