javascript - 如何给我的 JSON 字典一个主键,而不将它实现到我的循环中?
问题描述
我正在将一些代码从 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
,有没有人有一个好的方法来做到这一点?
解决方案
只需定义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);
如果是一个对象,那么您可以使用andresults
使代码更简洁: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)
推荐阅读
- python - python中的自动售货机-类别和总价
- arduino - 为什么我偶尔会获得最大值?
- spring - 如何在运行时在 Spring Boot 应用程序中执行和获取自定义选择 SQL?
- javascript - Bootstrap 5 Off-Canvas 从左到右
- ios - 使用 Xcode 在 Debug 构建中排除框架
- node.js - Npm install 失败并出现错误远程端意外挂断
- asp.net - 如何解决 smtp 错误:发送消息?
- python - 使用机器学习和部署进行客户细分
- php - PHP 标头未重定向(使用 ob_start 等!)
- python - 添加嵌入字段和缩略图后命令不起作用