我正在将一些代码从python转换为Javascript(我在JS中没有经验),作为其中的一部分,我需要编写一个JSON,目前在用JS编写时看起来像这样(只是一个简单的示例):
[
{
"Num": "000000",
"Status": 1,
},
{
"Num": "00001",
"Status": 0,
},
]
但是我需要它看起来像这样:
{
"mydata": [
{
"Num": "00000",
"Status": 1,
},
{
"Num": "00001",
"Status": 0,
},
]
}
如何修改我的代码以为整个JSON生成一个主键,这就是我到目前为止所拥有的:
var jsondata = []
for (result in results) {
jsondata.push({
'Num' : idnum,
'Status': results[result].StatusID,
})
}
let data = JSON.stringify(jsondata, null, 2)
fs.writeFileSync('testingjson.json', data)
这里的代码位于for循环中,所以我不能只将密钥写在push
中,它将为循环的每次迭代生成mydata
密钥。
我需要知道如何预定义mydata
,有人能做到这一点吗?
答案 0 :(得分:2)
只需将mydata
定义为数组,然后最后创建一个对象,其中mydata
是键之一:
const mydata = []
for (const result in results) {
mydata.push({
'Num' : idnum,
'Status': results[result].StatusID,
});
}
const json = JSON.stringify({ mydata }, null, 2);
如果要使用其他键名,则在字符串化时将其更改,例如:
const json = JSON.stringify({ someKeyName: mydata }, null, 2);
如果results
是对象,则可以使用Object.values
和map
使代码更简洁:
const Num = idnum;
const mydata = Object.values(results)
.map((item => ({ Num, Status: item.StatusID }));
const json = JSON.stringify({ mydata }, null, 2);
fs.writeFileSync('testingjson.json', data)