gpt4 book ai didi

javascript - 将新对象附加到 JSON 文件中的数组

转载 作者:行者123 更新时间:2023-12-05 02:43:38 24 4
gpt4 key购买 nike

如何向现有的对象数组形式的 JSON 文件添加附加对象?

这是我的 JS 代码:

const fs = require("fs");

let Human = {
Name: "John",
age: 20,

};

Human = JSON.stringify(Human, null, 2)

fs.appendFile('users.json', Human, error);

function error(err) {
console.log("1");
}

这给出了输出:

[
{
"Name": "John",
"age": 20,
},

{
"Name": "John",
"age": 20,
}
]{
"Name": "John",
"age": 20,

}

但我需要:

[
{
"Name": "John",
"age": 20,
},

{
"Name": "John",
"age": 20,
},
{
"Name": "John",
"age": 20,

}
]

如何让它正确写入数组?

最佳答案

将 JSON 形式的预序列化元素附加到预先存在的 JSON 文件具有直观意义。您可能会尝试切掉文件中的尾部 "]",在新元素前加上逗号,然后重新附加 "]"

但这在很多方面都可能出错。更好的方法是读取文件,将 JSON 解析为 JS 对象,对对象进行所需的修改,将对象序列化回 JSON,最后将字符串写回文件。

此代码显示了所有这些步骤以及生成示例数据的初始写入:

const fs = require("fs").promises;

(async () => {
// generate a sample JSON file
const filename = "users.json";
let users = [
{
name: "Amy",
age: 21,
},
{
name: "Bob",
age: 23,
},
];
await fs.writeFile(filename, JSON.stringify(users));

// append a new user to the JSON file
const user = {
name: "John",
age: 20,
};
const file = await fs.readFile(filename);
users = JSON.parse(file);
users.push(user);
await fs.writeFile(filename, JSON.stringify(users, null, 4));
})();

关于javascript - 将新对象附加到 JSON 文件中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66817898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com