忘掉以前的聊天记录,直接给出完整代码案例,用java和alibaba fastjson 库完成以下功能,:有一个json数组,有很多数据,有很多层级,是下面的这种格式[{"id":"402881ed3df7117c013df712a45a0001","name":"黑龙江省","parentId":""}, {"id":"402881ed3df7117c013df712a5e0009d","name":"上海市","parentId":""}],根据id和parentId关联关系,转换成带有children的形式,parentId 如果为"",则代表是顶级
时间: 2023-02-16 11:23:21 浏览: 110
这里是一个使用 Java 和 Alibaba Fastjson 库实现将 JSON 数组转换成带有 children 属性的形式的示例代码:
```
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class JSONArrayConverter {
public static void main(String[] args) {
String jsonString = "[{\"id\":\"402881ed3df7117c013df712a45a0001\",\"name\":\"黑龙江省\",\"parentId\":\"\"}, {\"id\":\"402881ed3df7117c013df712a5e0009d\",\"name\":\"上海市\",\"parentId\":\"\"}]";
// 将 JSON 字符串解析成 JSONArray
JSONArray array = JSON.parseArray(jsonString);
// 创建一个 Map 用于存储 ID 与 JSONObject 的映射关系
Map<String, JSONObject> map = new HashMap<>();
// 创建一个 List 用于存储没有父节点的 JSONObject
List<JSONObject> topLevelObjects = new ArrayList<>();
// 遍历 JSONArray,将所有的 JSONObject 存入 Map 中,如果是顶级节点,则加入 topLevelObjects 中
for (int i = 0; i < array.size(); i++) {
JSONObject object = array.getJSONObject(i);
map.put(object.getString("id"), object);
if (object.getString("parentId").isEmpty()) {
topLevelObjects.add(object);
}
}
// 遍历 topLevelObjects,添加 children 属性
for (JSONObject object : topLevelObjects) {
addChildren(object, map);
}
// 将结果转换成 JSON 字符串并输出
System.out.println(JSON.toJSONString(topLevelObjects));
}
// 递归方法,添加 children 属性
private static void addChildren(JSONObject object, Map<String, JSONObject> map) {
// 获取当前节点的 ID
String id = object.getString("id");
// 遍历 map,找
阅读全文