[英]Change JSON object format in Javascript
我有以下 JSON object,它来自 DB,格式如下:
{
"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”)
谢谢并恭祝安康
您可以解构id
并将属性的rest获取到lang
变量。 然后使用简写属性名称创建一个新的 object 和一个嵌套的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)
如果不支持解构和 rest 语法,您可以像这样遍历每个项目的键:
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)
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"}]} function output(inp){ var output = {"total_count": "","items": []} output.total_count = inp.total_count; var items = inp.items; items.forEach(item => { var obj = {"id": "","lang": {"en":"","de":""}}; obj.id = item.id; obj.lang.en = item.en; obj.lang.de = item.de; output.items.push(JSON.stringify(obj)); }); return output; } console.log(output(input));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.