我有一个 json 文件,我想向其中添加新字段

I have a json file and I want to add new field to it

我有一个 json 文件

[{
    "sport": "football",
},
{
    "sport": "swimming",
}]

我想为每个文档添加一个新字段,一个具有这种形式 A-11 的 uniqueID 字段,并将每个对象的数字增加一

我已经在 Node 中尝试过了

const fs = require('fs');
const filenameAppo = './app.json';
const requireFile = require(filenameAppo);

requireFile.uniqueID = 'A-11';
const test = fs.writeFile(filenameAppo,JSON.stringify(requireFile), function(err) {
    if (err) return console.log(err);

});

但它没有按预期工作所以我的错误是什么,或者如果有其他方法我可以做到

我认为解决这个问题的最佳方法是为文件数组数据创建一个对象包装器,然后添加 uniqueID 属性,如下所示:

const fs = require('fs');
const filenameAppo = './app.json';
const requireFile = require(filenameAppo);

const inputData = requireFile.data || requireFile;
let id = 11;
const output = { 
    data: inputData.map(row => { 
        row.uniqueID = "A-" + (id++);
        return row;
    }) 
}

const outputString = JSON.stringify(output , null, 4);
console.log(`Writing ${outputString.length} bytes to file: ${filenameAppo}...`);
fs.writeFile(filenameAppo, JSON.stringify(output , null, 4), function(err) {
    if (err) { 
        console.error(`An error occurred writing output file: ${filenameAppo}:`, err);
    } else { 
        console.log(`Successfully wrote ${outputString.length} bytes to file: ${filenameAppo}.`)
    }
});

您的 app.json 文件将如下所示:

{
    "data": [
        {
            "sport": "football",
            "uniqueID": "A-11"
        },
        {
            "sport": "swimming",
            "uniqueID": "A-12"
        }
    ]
}