Javascript 将JSON视为树结构

Javascript 将JSON视为树结构,javascript,Javascript,我有一些传入的JSON,它只包含嵌套映射(没有数组),例如 请注意,此处的键和值不遵循任何特定模式 我想要的是,给定这样一个表示树根的对象,生成一个表示第一层子对象的新对象列表,每个对象都作为一个新的JSON对象 var obj = { "name1": {"name2": "name3", "name4": {"name5": "name6"}}, "name7": "name8" } var result = [], tmp; for(var key in obj){

我有一些传入的JSON,它只包含嵌套映射(没有数组),例如

请注意,此处的键和值不遵循任何特定模式

我想要的是,给定这样一个表示树根的对象,生成一个表示第一层子对象的新对象列表,每个对象都作为一个新的JSON对象

var obj = {
    "name1": {"name2": "name3", "name4": {"name5": "name6"}},
    "name7": "name8"
}

var result = [], tmp;
for(var key in obj){
    if(obj.hasOwnProperty(key)){
        tmp = {};
        tmp[key] = obj[key];
        result.push(tmp)
    }
}
console.log(result)

演示:

如果您没有完全考虑使用嵌套对象,我将提出一个替代方案,您可以坚持:-每个元素都有一个id节点(对于某些指定的id属性)。-每个元素都可以指定具有父属性的父节点。-只有一个节点没有父节点。这是根节点。如果以这种方式提供JSON数据,以流友好的方式构建树可能会更容易。我改变了我的整个方法,但这确实完成了问题的要求。
var obj = {
    "name1": {"name2": "name3", "name4": {"name5": "name6"}},
    "name7": "name8"
}

var result = [], tmp;
for(var key in obj){
    if(obj.hasOwnProperty(key)){
        tmp = {};
        tmp[key] = obj[key];
        result.push(tmp)
    }
}
console.log(result)
function ent(map) {
  var entries = [];
  for (var key in map) 
    entries.push({
      key: key,
      value: map[key]
    });
  return entries;
}

ent({
  "name1": {"name2": "name3", "name4": {"name5": "name6"}},
  "name7": "name8"
})