我有多个JSON对象,需要将它们映射到一个对象。 我拥有的不同JSON对象包含不匹配的“键”
您能帮我找到解决此问题的方法吗?
示例JSON 1:
[
{
"id": 1696,
"date": "2019-06-27T14:18:11",
"img": {
"url": "test"
},
{
"id": 1896,
"date": "2019-06-27T14:18:11",
"img": {
"url": "test1"
}
]
示例JSON 2:
[
{
"uid": 1696,
"date": "2019-06-27T14:18:11",
"img": {
"link": "test"
},
{
"uid": 1896,
"date": "2019-06-27T14:18:11",
"img": {
"link": "test1"
}
]
答案 0 :(得分:0)
您可以创建具有所有映射的对象。并使用map()变换每个数组项。
mapKeys()
是一个递归函数,如果存在键的映射,则该函数将映射对象的键。
这适用于任何嵌套级别的对象。
let data = [{ "id": 1696, "date": "2019-06-27T14:18:11", "img": { "url": "test" } }, { "id": 1896, "date": "2019-06-27T14:18:11", "img": { "url": "test1" } } ];
let map = { "id": "uid", "url": "link" };
function mapKeys(obj) {
Object.entries(obj).forEach(([key, value]) => {
if (map[key]) {
obj[map[key]] = (typeof value === "object") ? mapKeys(value) : value;
delete obj[key];
} else {
obj[key] = (typeof value === "object") ? mapKeys(value) : value;
}
});
return obj;
}
let result = data.map(item => mapKeys(item));
console.log(result);