淘先锋技术网

首页 1 2 3 4 5 6 7

JSON是一种轻量级的数据格式,常用于数据交换。在处理JSON数据时,有时需要将其转换成树形结构,方便对数据进行分析和处理。

json变成树形结构

下面是一段将JSON数据转换成树形结构的代码,使用递归的方式实现:


function jsonToTree(json) {
  var result = [];
  for (var key in json) {
    var node = {
      name: key,
      children: []
    };
    if (typeof json[key] === 'object' && json[key] != null) {
      node.children = jsonToTree(json[key]);
    } else {
      node.value = json[key];
    }
    result.push(node);
  }
  return result;
}

var jsonData = {
  "a": {
    "b": 1,
    "c": {
      "d": 2,
      "e": 3
    }
  },
  "f": 4
};

var treeData = jsonToTree(jsonData);
console.log(treeData);

以上代码将JSON数据转换成如下树形结构:


[
  {
    "name": "a",
    "children": [
      {
        "name": "b",
        "value": 1,
        "children": []
      },
      {
        "name": "c",
        "children": [
          {
            "name": "d",
            "value": 2,
            "children": []
          },
          {
            "name": "e",
            "value": 3,
            "children": []
          }
        ]
      }
    ]
  },
  {
    "name": "f",
    "value": 4,
    "children": []
  }
]

可以看到,每个节点包括名称、值和子节点三个属性,如果当前节点的值是一个对象,则继续递归调用jsonToTree函数处理其子节点,直至所有节点处理完成。