【发布时间】:2022-01-19 06:04:17
【问题描述】:
我有这个 JSON 对象:
{
"columnNames": [
"Incident ID",
"IncidentType"
],
"rows": [
[
"3599590",
"Telecommuting/VWA Empl- Initiate"
],
[
"3599601",
"Telecommuting/VWA Empl- Initiate"
]
]
}
我想将 Javascript 中的那个对象转换成这个对象:
{
reportResults: [{
"Incident ID": "3599590",
"IncidentType": "Telecommuting/VWA Empl- Initiate"
},
{
"Incident ID": "3599591",
"IncidentType": "Telecommuting/VWA Empl- Initiate"
}
]
}
我已经尝试在以下示例中使用推送功能:
VWA_Output = {
"columnNames": [
"Incident ID",
"IncidentType"
],
"rows": [
[
"3599590",
"Telecommuting/VWA Empl- Initiate"
],
[
"3599601",
"Telecommuting/VWA Empl- Initiate"
]
]
};
JSTest_JSON_Var1 = {
reportResults: []
};
for (i in VWA_Output.rows) {
for (var j in VWA_Output.rows[i]) {
var key = VWA_Output.columnNames[j];
var value = VWA_Output.rows[i][j]
JSTest_JSON_Var1.reportResults.push({
[key]: value
});
}
}
console.log(JSTest_JSON_Var1);
但是,它似乎使用集合作为单独的数组元素来创建这样的对象:
{
[{
"reportResults": [{
"Incident ID": "3599590"
}, {
"IncidentType": "Telecommuting/VWA Empl- Initiate"
}
},
{
"Incident ID": "3599591"
},
{
"IncidentType": "Telecommuting/VWA Empl- Initiate"
}
}]
}
我希望列和行的集合成为数组中的单个记录集合:
{
"reportResults": [{
"Incident ID": "3599590",
"IncidentType": "Telecommuting/VWA Empl- Initiate"
}, {
"Incident ID": "3599591",
"IncidentType": "Telecommuting/VWA Empl- Initiate"
}]
}
谢谢!
【问题讨论】:
-
如果您在内循环之前创建一个空对象,您尝试的方法可能会起作用。然后在内循环内部将键和值分配给它作为
obj[key] = value,最后在内循环外部将该对象推送到JSTest_JSON_Var1.reportResults。但我认为你应该选择下面提供的更具可读性的答案。 -
所有提供的方法都通过我在浏览器中的测试工作。我正在使用 Oracle SOA Suite 中的 Javascript 组件来执行解析和对象重建,不幸的是它不喜欢 map 函数调用(该组件基于 Mozilla Rhino Javascript 引擎)。我最终按照airer301的建议更改了我的原始代码以推入外循环。
标签: javascript arrays json multidimensional-array