Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中将嵌套json转换为对象数组?_Javascript_Arrays_Object_Tree - Fatal编程技术网

如何在Javascript中将嵌套json转换为对象数组?

如何在Javascript中将嵌套json转换为对象数组?,javascript,arrays,object,tree,Javascript,Arrays,Object,Tree,我有一个像这样的深嵌套对象: { 'name_1': 'val', 'name_2': 'val', 'name_3': { 'name_4': { 'name_5': { 'name_6': 'val', 'name_7': 'val', 'name_8': { 'name_9': 'val' } } } } } 这里的key可以是任何东西,而不是nam

我有一个像这样的深嵌套对象:

{
  'name_1': 'val',
  'name_2': 'val',
  'name_3': {
    'name_4': {
      'name_5': {
        'name_6': 'val',
        'name_7': 'val',
        'name_8': {
          'name_9': 'val'
        }
      }
    }
  }
}
这里的key可以是任何东西,而不是name_1、name_2、name_3…等等(name key 作为名称_1,名称_2..仅用于快速理解)

我想把上面的json转换成下面提到的格式的对象数组

[
  { "id": "1", "name": 'name_1: val', "parent_id": "0"},
  { "id": "2", "name": 'name_2: val', "parent_id": "0"},
  { "id": "3", "name": 'name_3', "parent_id": "0"},
  { "id": "4", "name": 'name_4', "parent_id": "3"},
  { "id": "5", "name": 'name_5', "parent_id": "4"},
  { "id": "6", "name": 'name_6: val', "parent_id": "5"},
  { "id": "7", "name": 'name_7: val', "parent_id": "5"},
  { "id": "8", "name": 'name_8', "parent_id": "5"},
  { "id": "9", "name": 'name_9: val', "parent_id": "8"},
]

任何帮助都将是非常感激的

您可以采用迭代和递归的方法。(将
id
存储在对象中,以便为其保留相同的对象引用,这允许在所有嵌套递归调用中使用它。)

函数平面(对象,id={id:0},父对象id=0){
返回Object.entries(Object).reduce((r[k,v])=>{
变量名称=k+(类型v==='string'?':'+v:'');
r、 push({id:id.id++,name,parent_id});
if(v&&typeof v=='object')r.push(…flat(v,id,id.id));
返回r;
}, []);
}
变量数据={name_1:'val',name_2:'val',name_3:{name_4:{name_5:{name_6:'val',name_7:'val',name_8:{name_9:'val'}},
结果=平坦(数据);
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
您可以采用迭代和递归的方法。(将
id
存储在对象中,以便为其保留相同的对象引用,这允许在所有嵌套递归调用中使用它。)

函数平面(对象,id={id:0},父对象id=0){
返回Object.entries(Object).reduce((r[k,v])=>{
变量名称=k+(类型v==='string'?':'+v:'');
r、 push({id:id.id++,name,parent_id});
if(v&&typeof v=='object')r.push(…flat(v,id,id.id));
返回r;
}, []);
}
变量数据={name_1:'val',name_2:'val',name_3:{name_4:{name_5:{name_6:'val',name_7:'val',name_8:{name_9:'val'}},
结果=平坦(数据);
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
请添加您的问题陈述。我需要一个逻辑来将json对象转换为问题中提到的对象数组。这是否回答了您的问题@GrafiCode,不,该对象没有像我在上面的问题中提到的那样进行深度嵌套。请添加您的问题陈述。我需要一个逻辑来将json对象转换为问题中提到的对象数组。这是否回答了您的问题@GrafiCode,不,正如我在上面的问题中提到的,对象不是深嵌套的,您的答案使用name_1,'1'作为id,但在我的例子中,key可以是任何字符串,而不是name_1,name_2从何处获得
id
?我对上述答案添加了一个小的修复,现在它可以不依赖name_1 id,非常感谢您的回答。您的回答使用name_1,'1'作为id,但在我的情况下,key可以是任何字符串,而不是name_1,name_2您从哪里获得
id
?我对上述答案添加了一个小的修正,现在它可以不依赖name_1 id,非常感谢您的回答