【问题标题】:Convert nested JSON to an Array将嵌套 JSON 转换为数组
【发布时间】:2021-04-06 22:22:52
【问题描述】:

如何将带有嵌套子级的 JSON 转换为包含 parent_id 的数组,谢谢!

var json = {  
        id: "1",  
        name: "loreim ipsum",  
        data: {},  
        children: [{  
            id: "2",  
            name: "lorem ipsum1",  
            data: {},  
            children: [{  
                id: "3",  
                name: "lorem ipsum2",  
                data: {},  
                children: [{
                ..............

到这样的数组

array(
    array('id' => 1, 'parent_id' => null, 'name' => 'lorem ipsum'),
    array('id' => 2, 'parent_id' => 1, 'name' => 'lorem ipsum1'),
    array('id' => 3, 'parent_id' => 1, 'name' => 'lorem ipsum2'),
    array('id' => 4, 'parent_id' => 2, 'name' => 'lorem ipsum3'),
    array('id' => 5, 'parent_id' => 3, 'name' => 'lorem ipsum4'),
    array('id' => 6, 'parent_id' => null, 'name' => 'lorem ipsum5'),
);

【问题讨论】:

    标签: arrays json multidimensional-array


    【解决方案1】:

    递归构建平面数组-

    var json = {
      id: "1",
      name: "loreim ipsum",
      data: {},
      children: [{
        id: "2",
        name: "lorem ipsum1",
        data: {},
        children: [{
            id: "3",
            name: "lorem ipsum2",
            data: {},
            children: [{
              id: "4",
              name: "lorem ipsum2",
              data: {}
            }]
          },
          {
            id: "5",
            name: "lorem ipsum2",
            data: {},
            children: [{
              id: "6",
              name: "lorem ipsum2",
              data: {}
            }]
          }
        ]
      }]
    }
    
    function flat(array, parentId) {
      var result = [];
      array.forEach(function(a) {
    
        var newObject = Object.assign({}, a);
        delete newObject.children;
        newObject.parent_id = parentId;
        result.push(newObject);
        if (Array.isArray(a.children)) {
          result = result.concat(flat(a.children, a.id));
        }
      });
      return result;
    }
    
    console.log(flat([json], null));

    【讨论】:

    • 嗨尼基尔!谢谢您的答复。如何将您的代码转换为 php?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 2020-02-16
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多