gpt4 book ai didi

javascript - 在 Javascript 中更改 JSON 对象格式

转载 作者:行者123 更新时间:2023-11-30 09:11:16 24 4
gpt4 key购买 nike

我有以下 JSON 对象,它来自数据库,格式如下:

{
"total_count": 4,
"items": [
{
"id": "906a1409-b66a-4f8f-b76b-36898828faf2",
"en": "Grade 1B",
"de": "xyz"
},
{
"id": "00ace4db-d29e-4cf4-b25c-f85369db345e",
"en": "Grade 1A",
"de": "xyz"
},
{
"id": "6b4a5578-4f27-4370-9320-a7f57a6c0f54",
"en": "Grade 2A",
"de": "xyz"
},
{
"id": "53b52ee8-dc2e-4c6b-8017-c913d334d5af",
"en": "Grade 2B",
"de": "xyz
}
]
}

但我需要以下格式来使用我的 UI:

{
"total_count": 4,
"items": [
{
"id": "906a1409-b66a-4f8f-b76b-36898828faf2",
"lang": {
"en": "Grade 1B",
"de": "xyz"
}
},
{
"id": "00ace4db-d29e-4cf4-b25c-f85369db345e",
"lang": {
"en": "Grade 1A",
"de": "xyz"
}
},
{
"id": "6b4a5578-4f27-4370-9320-a7f57a6c0f54",
"lang": {
"en": "Grade 2A",
"de": "xyz"
}
},
{
"id": "53b52ee8-dc2e-4c6b-8017-c913d334d5af",
"lang": {
"en": "Grade 2B"
"de": "xyz"
}
]
}

是否有一种简单的 javascript 方法来执行此转换?也许是 map 方法?

我正在尝试这样的事情:

var rows_Original; // this comes from DB
var rows_Result= {}; // new json

rows_Result["total_count"] = rows_Original.length;
rows_Result['items'] = rows_Original;
rows_Result['items'].lang={};
for (var item in rows_Result['items']) {
item[i].lang.en = item.en;
item[i].lang.de = 'item.de;
}

但我一直在获取像 de、en 这样的元素(无法设置未定义的属性“en”)

感谢和问候

最佳答案

你可以 destructure id 并获取 rest lang 变量的属性。然后使用 Shorthand property names使用嵌套的 lang 属性创建新对象

const input = {total_count:4,items:[{id:"906a1409-b66a-4f8f-b76b-36898828faf2",en:"Grade 1B",de:"xyz"},{id:"00ace4db-d29e-4cf4-b25c-f85369db345e",en:"Grade 1A",de:"xyz"},{id:"6b4a5578-4f27-4370-9320-a7f57a6c0f54",en:"Grade 2A",de:"xyz"},{id:"53b52ee8-dc2e-4c6b-8017-c913d334d5af",en:"Grade 2B",de:"xyz"}]};

const { total_count, items } = input;

const newItems = items.map(({ id, ...lang }) => ({ id, lang }) ),
output = { total_count, items: newItems };

console.log(output)

如果不支持解构和剩余语法,您可以像这样遍历每个项目的键:

var input = {total_count:4,items:[{id:"906a1409-b66a-4f8f-b76b-36898828faf2",en:"Grade 1B",de:"xyz"},{id:"00ace4db-d29e-4cf4-b25c-f85369db345e",en:"Grade 1A",de:"xyz"},{id:"6b4a5578-4f27-4370-9320-a7f57a6c0f54",en:"Grade 2A",de:"xyz"},{id:"53b52ee8-dc2e-4c6b-8017-c913d334d5af",en:"Grade 2B",de:"xyz"}]};

var output = {
total_count: input.total_count,
items: []
};

for (var item of input.items) {
var newItem = {};

for (var key in item) {
if (key === 'id')
newItem[key] = item[key]
else {
newItem.lang = newItem.lang || {};
newItem.lang[key] = item[key]
}
}

output.items.push(newItem)
}

console.log(output)

关于javascript - 在 Javascript 中更改 JSON 对象格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58724729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com