javascript - 从另一个嵌套的 json 对象创建一个嵌套的 json 对象 [HOLD]
问题描述
正如问题所述,我想从当前的 json 对象创建一个新对象。
我当前的 json 对象:
{
"name": "Parent",
"children": [
{
"name": "Child1",
"children": [
{
"name": "GrandChid1",
"children": []
},
{
"name": "GrandChild2",
"children": []
},
{
"name": "GrandChild3",
"children": [
{
"name": "GrandGrandChild1",
"children": [
{
"name": "GrandGrandGrandChild1",
"children": []
},
{
"name": "GrandGrandGrandChild2",
"children": []
}
]
}
]
}
]
}
]
}
现在新对象将如下所示:
{
"Parent": [
{
"Child1": [
{
"GrandChid1": ''
},
{
"GrandChild2": ''
},
{
"GrandChild3": [
{
"GrandGrandChild1": [
{
"GrandGrandGrandChild1": ''
},
{
"GrandGrandGrandChild2": ''
}
]
}
]
}
]
}
]
}
如果没有孩子,那么它就变成了一个字符串(简单的键值)对。任何帮助都会受到赞赏,尤其是对于递归解决方案。
解决方案
尝试
let r = o=> (o.children=o.children.map(x=>r(x)),
{[o.name]: o.children.length ? o.children:''});
let c= {
"name": "Parent",
"children": [
{
"name": "Child1",
"children": [
{
"name": "GrandChid1",
"children": []
},
{
"name": "GrandChild2",
"children": []
},
{
"name": "GrandChild3",
"children": [
{
"name": "GrandGrandChild1",
"children": [
{
"name": "GrandGrandGrandChild1",
"children": []
},
{
"name": "GrandGrandGrandChild2",
"children": []
}
]
}
]
}
]
}
]
}
let r = o=> (o.children=o.children.map(x=>r(x)),{[o.name]: o.children.length ? o.children:''});
console.log(r(c));
推荐阅读
- c# - 获取最新上传的记录
- ios - 如果服务器端使用 FCM 发送通知,是否必须在 iOS 客户端应用程序中使用 FCM 来接收远程通知
- ember.js - 每次加载页面时的 Ember 加载变量
- c# - 如何将我的自定义菜单命令添加到 Windows 7 及更高版本中已安装的应用程序
- mysql - 获取MySQL列中至少一个为null的行数据
- java - 无效的列名 Gull
- c# - xamarin c# iOS webrequest 401错误
- c - 字符数组中的线性搜索为要搜索的元素获取垃圾值
- powershell - DSC Https 拉取服务器 - 发送请求时出错
- java - 使用 JPanel 列表制作表格