当前位置:   article > 正文

list转json tree的工具类

list转json

来源: https://www.cnblogs.com/songweipeng/p/17014687.html

package com.glodon.safety.contingency.job;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.*;

/**
 * @Description 通用的list转json tree的工具类
 * @Author songwp
 * @Date 2022/12/30 12:59
 * @Version 1.0.0
 **/
public class CommonTreeUtil {
    /**
     - listToTree
     - <p>方法说明<p>
     - 将JSONArray数组转为树状结构
     - @param arr 需要转化的数据
     - @param id 数据唯一的标识键值
     - @param pid 父id唯一标识键值
     - @param child 子节点键值
     - @return JSONArray
     */
    public static JSONArray listToTree(JSONArray arr, String id, String pid, String child){
        JSONArray r = new JSONArray();
        JSONObject hash = new JSONObject();
        //将数组转为Object的形式,key为数组中的id
        for(int i=0;i<arr.size();i++){
            JSONObject json = (JSONObject) arr.get(i);
            hash.put(json.getString(id), json);
        }
        //遍历结果集
        for(int j=0;j<arr.size();j++){
            //单条记录
            JSONObject aVal = (JSONObject) arr.get(j);
            //在hash中取出key为单条记录中pid的值
            JSONObject hashVP = (JSONObject) hash.get(aVal.get(pid).toString());
            //如果记录的pid存在,则说明它有父节点,将她添加到孩子节点的集合中
            if(hashVP!=null){
                //检查是否有child属性
                if(hashVP.get(child)!=null){
                    JSONArray ch = (JSONArray) hashVP.get(child);
                    ch.add(aVal);
                    hashVP.put(child, ch);
                }else{
                    JSONArray ch = new JSONArray();
                    ch.add(aVal);
                    hashVP.put(child, ch);
                }
            }else{
                r.add(aVal);
            }
        }
        return r;
    }

    public static void main(String[] args) {
        Map map = new HashMap();
        map.put("id","1");
        map.put("parentId","0");
        map.put("name","陕西省");
        Map map1 = new HashMap();
        map1.put("id","2");
        map1.put("parentId","1");
        map1.put("name","西安市");
        Map map2 = new HashMap();
        map2.put("id","3");
        map2.put("parentId","2");
        map2.put("name","雁塔区");
        Map map3 = new HashMap();
        map3.put("id","4");
        map3.put("parentId","1");
        map3.put("name","咸阳市");
        List<Map> mapList = Arrays.asList(map, map1, map2, map3);
        JSONArray result = CommonTreeUtil.listToTree(JSONArray.parseArray(JSON.toJSONString(mapList)),"id","parentId","children");
        System.out.println(result);

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80

控制台输出:

[
    {
        "children":[
            {
                "children":[
                    {
                        "name":"雁塔区",
                        "id":"3",
                        "parentId":"2"
                    }
                ],
                "name":"西安市",
                "id":"2",
                "parentId":"1"
            },
            {
                "name":"咸阳市",
                "id":"4",
                "parentId":"1"
            }
        ],
        "name":"陕西省",
        "id":"1",
        "parentId":"0"
    }
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/366852
推荐阅读
相关标签
  

闽ICP备14008679号