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;
}