list转json树结构java
时间: 2023-10-05 08:04:37 浏览: 103
以下是将Java中的List转换为JSON树结构的示例代码:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.util.List;
public class ListToJSONTree {
public static void main(String[] args) throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
// 创建一个List,用于模拟数据
List<Node> nodeList = List.of(
new Node(1, "root", null),
new Node(2, "node1", 1),
new Node(3, "node2", 1),
new Node(4, "node3", 2),
new Node(5, "node4", 3)
);
// 将List转换为JSON树结构
ArrayNode rootNode = objectMapper.createArrayNode();
for (Node node : nodeList) {
ObjectNode nodeObject = objectMapper.createObjectNode();
nodeObject.put("id", node.getId());
nodeObject.put("name", node.getName());
nodeObject.put("parentId", node.getParentId());
addChildNode(rootNode, nodeObject, node.getParentId());
}
// 输出转换后的JSON树结构
System.out.println(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode));
}
private static void addChildNode(ArrayNode rootNode, ObjectNode nodeObject, Integer parentId) {
for (int i = 0; i < rootNode.size(); i++) {
ObjectNode parentObject = (ObjectNode) rootNode.get(i);
if (parentObject.get("id").asInt() == parentId) {
if (!parentObject.has("children")) {
parentObject.putArray("children");
}
ArrayNode childrenArray = (ArrayNode) parentObject.get("children");
childrenArray.add(nodeObject);
return;
} else if (parentObject.has("children")) {
addChildNode((ArrayNode) parentObject.get("children"), nodeObject, parentId);
}
}
}
static class Node {
private final Integer id;
private final String name;
private final Integer parentId;
public Node(Integer id, String name, Integer parentId) {
this.id = id;
this.name = name;
this.parentId = parentId;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
public Integer getParentId() {
return parentId;
}
}
}
```
这个例子中,我们通过创建一个List来模拟数据,然后将这个List转换为JSON树结构。在转换的过程中,我们使用了Jackson库来进行JSON的序列化和反序列化。我们使用ObjectMapper来创建JSON对象和数组,使用ObjectNode和ArrayNode来表示JSON对象和数组。我们遍历List中的每一个元素,将其转换为JSON对象,并且添加到相应的父节点下。在添加子节点时,我们使用递归函数addChildNode来遍历JSON树结构,找到相应的父节点并添加子节点。最后,我们使用ObjectMapper将JSON树结构转换为字符串,并且输出到控制台上。
阅读全文