javascript - 如何使用 angular/javascript 将现有 json 的格式编码/更改为另一种格式
问题描述
这里我有一个以下格式的json
现在的格式
{
"info": {
"laptop": {
},
"config": {
"properties": {
"ram": {
},
"processor": {
},
"hdd": {
}
}
},
"link": {
},
"name": {
},
"company": {
"properties": {
"model": {
},
"maker": {
"type": "integer"
},
"country": {
"type": "text"
},
"enterprise": {
}
}
}
}
}
我正在使用一些插件,如 ngx-tree,primeng 插件,其数据需要采用不同的格式,如下所示
所需格式
[
{
name: 'laptop',
},
{
name: 'config',
children: [
{ name: 'ram', children: [] },
{ name: 'processor' },
{name:'hdd'}
]
},
{
name: 'link',
children: []
},
{
name: 'name',
children: []
},
{
name: 'company',
children: [
{ name: 'model' },
{ name: 'maker' },
{ name: 'country' },
{ name: 'enterprise' }
]
}
];
现在我的问题是如何将我的数据从当前格式更改为所需格式?有什么建议可以让我做出改变吗
解决方案
这是一个单行的纯功能解决方案:
const input = {
"info": {
"laptop": {
},
"config": {
"properties": {
"ram": {
},
"processor": {
},
"hdd": {
}
}
},
"link": {
},
"name": {
},
"company": {
"properties": {
"model": {
"properties": {
"apple": {},
"banana": {},
"pear": {}
}
},
"maker": {
"type": "integer"
},
"country": {
"type": "text"
},
"enterprise": {
}
}
}
}
}
const convert = input => Object
.entries(input)
.map(([name, value]) => ({
name,
children: convert(value.properties || {})
}))
console.log(convert(input.info));
这是一个es2015版本:
function convert(input) {
return Object.keys(input).map(function(name) {
return {
name: name,
children: convert(input[name].properties || {})
};
});
}
推荐阅读
- python - vscode python调试器不对断点或stoponentry做出反应
- c++ - “标识符未定义”,试图从私有结构创建一个函数
- django - Django 将图像从 URL 保存到模型导致 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
- if-statement - SAS 错误:SUM 的空参数无效
- python - 使用 Python 通过目录中的多个 .csv 文件循环函数
- jupyter-notebook - 谷歌colab中的数据集丢失了?
- python - 使用前一个日期从现有列创建新的 Pandas 列
- apache-spark - 关于 spark 数据集中的 count 方法的问题?
- mysql - 我如何知道是什么促使自动 MYSQL 查询每天在我的网站上运行?
- google-sheets - 在 Google 表格中加入两个表并计算第二个表中的值