jsonTree

把扁平化的数据转为成树形结构的Json数据。

API

jsonTree(data, config)

  • data: 数组,扁平化数据
  • config: 配置对象
    • id 数据里的id string类型
    • pid 数据里的父id string类型
    • children 生成结果中子节点的字段名 string类型
  • 返回一个树形结构的对象

方法

var jsonTree = function (data,config) {
  //1
  var id = config.id || 'id',
      pid = config.pid || 'pid',
      children = config.children || 'children';
      var idMap = [],
      jsonTree = [];

 //2
  data.forEach(function(v){
    idMap[v[id]] = v;
  });

  //3
  data.forEach(function(v){
    var parent = idMap[v[pid]];
    if(parent) {
      !parent[children] && (parent[children] = []);
      parent[children].push(v);
    } else {
      jsonTree.push(v);
    }
  });

  return jsonTree;
};

数据

var data = [
   {"id":1,"parent":0,"addr":"重庆"},
   {"id":11,"parent":1,"addr":"重庆"},
   {"id":12,"parent":1,"addr":"重庆"},
   {"id":121,"parent":12,"addr":"重庆"},
   {"id":2,"parent":0,"addr":"重庆"},
   {"id":21,"parent":2,"addr":"重庆"},
   {"id":211,"parent":21,"addr":"重庆"},
   {"id":3,"parent":0,"addr":"重庆"},
   {"id":4,"parent":0,"addr":"重庆"},
   {"id":31,"parent":3,"addr":"重庆"},
   {"id":32,"parent":3,"addr":"重庆"}
];

调用

//调用
var result = jsonTree(data, {
    id: 'id',
    pid: 'parent',
    children: 'list'
});
console.log(result)
console.log(JSON.stringify(result, null, '\t'));

解析

  • 第一段
    • 声明了变量,拿到传参过来的值,注意这里拿到的是string类型,不是对应的值
  • 第二段
    • v[id]==v[“id”]==v.id
    • idMap数组的下标对应着id为下标的相应json数据
    • a[1]对应着id为1的json数据,以此类推
  • 第三段
    • 拿到当前遍历的父元素id
    • 根据父元素id,判断数组里是否存在这样一条数据
    • 存在,就判断父元素是否有子元素数组,若没有就添加一个children数组(传参过来的)
      把当前元素添加父元素的children数组里
    • 不存在,就直接添加到jsonTree里

源码

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用Python内置的`json`和`pprint`模块来将JSON数据转换成树形结构进行可视化。下面是一个示例代码: ```python import json from pprint import pprint # JSON数据 data = { "name": "John", "age": 30, "city": "New York", "children": [ { "name": "Mary", "age": 5 }, { "name": "Peter", "age": 8 } ] } # 将JSON数据转换成Python对象 obj = json.loads(json.dumps(data)) # 使用pprint模块进行可视化输出 pprint(obj) ``` 输出结果: ``` {'age': 30, 'children': [{'age': 5, 'name': 'Mary'}, {'age': 8, 'name': 'Peter'}], 'city': 'New York', 'name': 'John'} ``` 可以看到,使用`pprint`模块进行输出时,数据已经被转换成了树形结构。其中,每一行表示一个节点,节点的缩进表示节点的层级关系。 ### 回答2: Python可以通过使用内置的json模块将JSON数据构建成树形结构。 首先,我们需要导入json模块并读取JSON数据。可以使用`json.load()`方法来读取JSON文件,或者使用`json.loads()`方法将字符串的JSON数据转换为Python的字典或列表。 然后,我们可以使用递归的方式遍历JSON数据,并将其构建成树形结构。例如,如果JSON数据是一个字典,我们可以使用一个递归函数来遍历字典中的每一个键和值,并将其构建成树的节点。如果JSON数据是一个列表,我们可以使用一个循环来遍历列表中的每一个元素,并使用递归函数将每个元素构建为树的节点。如果JSON数据中还有嵌套的字典或列表,我们可以在递归函数中继续调用自身。 最后,我们可以将构建好的树形结构进行进一步的处理或操作,例如获取某个节点的值、添加新的节点、修改节点的值等。 总之,Python可以通过递归遍历和构建的方式将JSON数据构建成树形结构,以便于对数据的处理和操作。 ### 回答3: Python提供了一个内置的json库,可以将JSON数据解析成树状结构。 首先,我们需要导入json库: ``` import json ``` 然后,我们可以使用`json.loads()`函数将JSON数据解析成Python的字典或列表对象: ``` json_data = '{"name": "John", "age": 30, "city": "New York"}' parsed_data = json.loads(json_data) ``` 接下来,我们可以遍历字典或列表对象,将其转换为树状结构。 以下是一个示例代码,将JSON数据解析成树状结构,并打印出来: ``` def print_tree(data, level=0): if isinstance(data, dict): for key, value in data.items(): print(' ' * level * 4, key) print_tree(value, level + 1) elif isinstance(data, list): for item in data: print_tree(item, level) else: print(' ' * level * 4, data) json_data = '{"name": "John", "age": 30, "city": "New York", "hobbies": ["Reading", "Traveling"], "pets": {"dog": "Buddy", "cat": "Whiskers"}}' parsed_data = json.loads(json_data) print_tree(parsed_data) ``` 运行结果如下: ``` name John age 30 city New York hobbies Reading Traveling pets dog Buddy cat Whiskers ``` 通过解析JSON数据,并将其转换成树状结构,我们可以更好地理解和操作JSON数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值