children json数据 递归,从对象数组递归创建JSON树结构

Here is my data structure:

{ projects: [

{ revisions: [

{ files: [] },

],

}

],

user: {}

}

I'm tyring to recursively create a JSON hierarchy structure of an object's parents and their ids. Check your console. Look at projects[0].revisions[0]._idTree, which contains the projects._id and revisions as a child of projects, just as expected. Now look at projects[0].revisions[0].files[0]._idTree, which contains projects.files as a sibling of projects.revisions, when files should be a child of projects.revisions. How do I fix this?

解决方案

Please rewrite recurseTree like this:

function recurseTree(tree, newKey, newId) {

if(angular.element.isEmptyObject(tree)) {

tree[newKey] = {_id: newId};

return;

}

var child = null; // find current tree's child

for(var key in tree) {

if (key != '_id') {

child = tree[key]; // found a child

break;

}

}

if (child) { // recursively process on child

recurseTree(child, newKey, newId);

} else { // no child, so just fill the tree

tree[newKey] = {_id: newId};

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个 Java 递归反序列化树形 JSON 数据的示例代码: ```java import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonTreeDeserializer { private static ObjectMapper mapper = new ObjectMapper(); public static void main(String[] args) { String json = "{\"id\":1,\"name\":\"root\",\"children\":[{\"id\":2,\"name\":\"child1\",\"children\":[{\"id\":3,\"name\":\"grandchild1\"},{\"id\":4,\"name\":\"grandchild2\"}]},{\"id\":5,\"name\":\"child2\",\"children\":[{\"id\":6,\"name\":\"grandchild3\"},{\"id\":7,\"name\":\"grandchild4\"}]}]}"; try { JsonNode rootNode = mapper.readTree(json); Node tree = deserialize(rootNode); System.out.println(tree); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static Node deserialize(JsonNode node) { int id = node.get("id").asInt(); String name = node.get("name").asText(); Node tree = new Node(id, name); JsonNode childrenNode = node.get("children"); if (childrenNode != null && childrenNode.isArray()) { for (JsonNode childNode : childrenNode) { Node child = deserialize(childNode); tree.addChild(child); } } return tree; } } class Node { private int id; private String name; private List<Node> children; public Node(int id, String name) { this.id = id; this.name = name; this.children = new ArrayList<Node>(); } public void addChild(Node node) { this.children.add(node); } @Override public String toString() { return "Node [id=" + id + ", name=" + name + ", children=" + children + "]"; } } ``` 这个示例代码使用了 Jackson 库来进行 JSON 反序列化。首先读取 JSON 数据,然后递归地反序列化每个节点,并构建树形结构。最后输出树形结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值