多层级json如下,循环遍历,根据hasAuth 字段值移除层级里面元素,如果hasAuth值为false则移除该元素,可用迭代器或者用java8 的removeIf实现
{
"state": 200,
"code": 10,
"data": [
{
"studyDeptNo": "1",
"hasAuth": true,
"gradeList": [
{
"hasAuth": true,
"gradeName": "七年级",
"gradeNo": "21",
"classList": [
{
"hasAuth": true,
"classId": "514f0",
"academicYear": "2024",
"abbrName": "1班",
"classNo": "201",
"gradeNo": "21",
"className": "七(1)班",
"id": "514fac1b591611ef9a4a00163e172e25",
"trusteeshipName": "月托"
}
]
},
{
"hasAuth": true,
"gradeName": "八年级",
"gradeNo": "2",
"classList": [
{
"hasAuth": true,
"classId": "860ffb",
"academicYear": "2024",
"abbrName": "1班",
"classNo": "232101",
"gradeNo": "22",
"className": "八(1)班",
"id": "8b68",
"trusteeshipName": "月托",
"classNameEn": ""
}
]
},
{
"hasAuth": true,
"gradeName": "九年级",
"gradeNo": "23",
"classList": [
{
"hasAuth": true,
"classId": "3270b9ad0d4711edacdf00163e172e25",
"academicYear": "2024",
"abbrName": "九(1)班",
"classNo": "222101",
"gradeNo": "23",
"className": "九(1)班",
"id": "8b687b032f1f11ef9a4a00163e172e25",
"trusteeshipName": "月托",
"classNameEn": ""
},
{
"hasAuth": true,
"classId": "3271cd200d4711edacdf00163e172e25",
"academicYear": "2024",
"abbrName": "九(2)班",
"classNo": "222102",
"gradeNo": "23",
"className": "九(2)班",
"id": "8b6",
"trusteeshipName": "月托",
"classNameEn": ""
},
{
"hasAuth": true,
"classId": "3272",
"academicYear": "2024",
"abbrName": "3班",
"classNo": "203",
"gradeNo": "23",
"className": "3班",
"id": "8b68",
"trusteeshipName": "月托",
"classNameEn": ""
},
{
"hasAuth": true,
"classId": "3273e5f",
"academicYear": "2024",
"abbrName": "4班",
"classNo": "204",
"gradeNo": "23",
"className": "4班",
"id": "8b687e",
"trusteeshipName": "周托",
"classNameEn": ""
},
{
"hasAuth": true,
"classId": "0c4f0ae",
"academicYear": "2024",
"abbrName": "一班",
"classNo": "205",
"gradeNo": "23",
"className": "1班",
"id": "8b687f8",
"trusteeshipName": "周托",
"classNameEn": ""
}
]
}
],
"studyDeptName": "初中部"
}
]
}
用迭代器实现方法如下:
if (!CollectionUtils.isEmpty(dataList)) {
Iterator<JSONObject> iterator = dataList.iterator();
while (iterator.hasNext()) {
JSONObject next = iterator.next();
if (!(Boolean) next.get("hasAuth")) {
iterator.remove();
} else {
JSONArray gradeList = next.getJSONArray("gradeList");
if (!CollectionUtils.isEmpty(gradeList)) {
Iterator<Object> gradeIterator = gradeList.iterator();
while (gradeIterator.hasNext()) {
JSONObject grade = (JSONObject) gradeIterator.next();
if (!(Boolean) grade.get("hasAuth")) {
gradeIterator.remove();
} else {
JSONArray classList = grade.getJSONArray("classList");
if (!CollectionUtils.isEmpty(classList)) {
Iterator<Object> iteratorClass = classList.iterator();
while (iteratorClass.hasNext()) {
JSONObject classJson = (JSONObject) iteratorClass.next();
if (!(Boolean) classJson.get("hasAuth")) {
iteratorClass.remove();
}
}
}
}
}
}
}
}
}
用java8 removeIf 实现
private static void removeNodeByHasAuth(List<JSONObject> dataList) {
if (!CollectionUtils.isEmpty(dataList)) {
dataList.removeIf(x-> {
if (!(Boolean)x.get("hasAuth")) {
return true;
}else {
JSONArray gradeList = x.getJSONArray("gradeList");
if (!CollectionUtils.isEmpty(gradeList)){
gradeList.removeIf(y-> {
JSONObject grade = (JSONObject)y;
if (!(Boolean)grade.get("hasAuth")) {
return true;
}else{
JSONArray classList = grade.getJSONArray("classList");
if (!CollectionUtils.isEmpty(classList)){
classList.removeIf(z->{
JSONObject classJson = (JSONObject) z;
if (!(Boolean)classJson.get("hasAuth")){
return true;
}
return false;
});
}
}
return false;
});
}
}
return false;
});
}
}
1365

被折叠的 条评论
为什么被折叠?



