树状结构Json解析成Java对象

Json:

[{
	"id": 1,
	"parentId": 0,
	"name": "自然资源概况",
	"updateFrequency": "年度",
	"source": "上报数据",
	"children": [{
		"id": 2,
		"parentId": 1,
		"name": "土地资源",
		"updateFrequency": "年度",
		"source": "上报数据",
		"children": [{
			"id": 3,
			"parentId": 2,
			"name": "土地调查面积01(公顷)",
			"updateFrequency": "年度",
			"source": "上报数据",
			"children": [

			]
		}, {
			"id": 4,
			"parentId": 2,
			"name": "耕地面积02(公顷)",
			"updateFrequency": "年度",
			"source": "上报数据",
			"children": [

			]
		}]
	}, {
		"id": 5,
		"parentId": 1,
		"name": "森林资源",
		"updateFrequency": "年度",
		"source": "上报数据",
		"children": [{
			"id": 6,
			"parentId": 5,
			"name": "森林覆盖率20(%)",
			"updateFrequency": "年度",
			"source": "上报数据",
			"children": [

			]
		}, {
			"id": 7,
			"parentId": 5,
			"name": "森林蓄积量21(亿立方米)",
			"updateFrequency": "年度",
			"source": "上报数据",
			"children": [

			]
		}]
	}]
}, {
	"id": 8,
	"parentId": 0,
	"name": "不动产登记发证情况",
	"updateFrequency": "季度",
	"source": "不动产系统",
	"children": [{
		"id": 9,
		"parentId": 8,
		"name": "业务总量",
		"updateFrequency": "季度",
		"source": "不动产系统",
		"children": [{
			"id": 10,
			"parentId": 9,
			"name": "不动产登记业务总量",
			"updateFrequency": "季度",
			"source": "不动产系统",
			"children": [

			]
		}, {
			"id": 11,
			"parentId": 9,
			"name": "首次登记",
			"updateFrequency": "季度",
			"source": "不动产系统",
			"children": [

			]
		}]
	}, {
		"id": 12,
		"parentId": 8,
		"name": "登记证书量",
		"updateFrequency": "季度",
		"source": "不动产系统",
		"children": [{
			"id": 13,
			"parentId": 12,
			"name": "不动产登记证书量",
			"updateFrequency": "季度",
			"source": "不动产系统",
			"children": [

			]
		}, {
			"id": 14,
			"parentId": 12,
			"name": "集体土地所有权",
			"updateFrequency": "季度",
			"source": "不动产系统",
			"children": [

			]
		}]
	}]
}]

方法:

public static List<ZhiBiaoObj> analysisJson(String json) {
        List<ZhiBiaoJsonObj> zhiBiaoJsonObjs = JSONArray.parseArray(json, ZhiBiaoJsonObj.class);
        List<ZhiBiaoObj> resultList = new ArrayList<>();
        if (!zhiBiaoJsonObjs.isEmpty()) {
            getList(zhiBiaoJsonObjs, resultList);
        }
        // 根据id正序
        resultList.sort(new Comparator<ZhiBiaoObj>() {
            @Override
            public int compare(ZhiBiaoObj o1, ZhiBiaoObj o2) {
                return o1.getId() - o2.getId();
            }
        });
        return resultList;
    }

    private static List<ZhiBiaoObj> getList(List<ZhiBiaoJsonObj> zhiBiaoJsonObjs, List<ZhiBiaoObj> resultList) {
        for (ZhiBiaoJsonObj item : zhiBiaoJsonObjs) {
            ZhiBiaoObj zhiBiaoObj = new ZhiBiaoObj();
            BeanUtils.copyProperties(item, zhiBiaoObj); // 对象属性名相同时值复制  目标对象/源对象
            List<ZhiBiaoJsonObj> children = item.getChildren();
            if (!children.isEmpty()) {
                getList(children, resultList);
            }
            if (!resultList.contains(zhiBiaoObj)) {
                resultList.add(zhiBiaoObj);
            }
        }
        return resultList;
    }

猜你喜欢

转载自blog.csdn.net/weixin_42629433/article/details/114821020