Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何给JSON字典一个主键,而不将其实现到循环中?_Javascript_Json - Fatal编程技术网

Javascript 如何给JSON字典一个主键,而不将其实现到循环中?

Javascript 如何给JSON字典一个主键,而不将其实现到循环中?,javascript,json,Javascript,Json,我正在将一些代码从python翻译成Javascript(我对JS缺乏经验),作为其中的一部分,我需要编写一个JSON,目前在用JS编写时看起来是这样的(只是一个简单的示例): 但是我需要它看起来像这样: { "mydata": [ { "Num": "00000", "Status": 1, }, { "Num": "00001", "Stat

我正在将一些代码从python翻译成Javascript(我对JS缺乏经验),作为其中的一部分,我需要编写一个JSON,目前在用JS编写时看起来是这样的(只是一个简单的示例):

但是我需要它看起来像这样:

{
    "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);
如果
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)

只需将
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)

results
是数组还是对象?results是我从SQL数据库查询的对象是
results
数组还是对象?results是我从SQL数据库查询的对象谢谢,这非常有效。当它允许我欺骗你时,我会标记为正确,这非常有效。如果允许,我将标记为正确