使用 fs.append 写入 json 文件
write into json file with fs.append
我正在使用 node.js 进行一个项目,并且正在努力将正确位置的 JSON 对象放入我现有的数据中。我的文件目前看起来像这样:
[
{
"id": "001",
"name": "Paul,
"city": "London"
},
{
"id": "002",
"name": "Peter,
"city": "New York"
},
...
]
我试着这样安排我的数据:
var data = { id: id, name: name, city: city };
将相应的数据存储在这些变量中。然后我使用 var json = JSON.stringify(data)
并尝试
fs.appendFile("myJSONFile.json", json, function (err) {
if (err) throw err;
console.log('Changed!');
});
文件确实发生了变化,但新条目位于方括号之后。
[
{
"id": "001",
"name": "Paul,
"city": "London"
},
{
"id": "002",
"name": "Peter,
"city": "New York"
},
...
]{"id":"004","name":"Mark","city":"Berlin"}
如何将它与之前的条目放在一起?任何帮助将不胜感激!
您需要先读取文件,在您的情况下,您要在文件中存储一个数组。因此,您需要将您的对象推送到您从文件中读取的数组,并将结果写回文件(不是追加):
const fs = require('fs/promises');
// ...
const addToFile = async data => {
let fileContents = await fs.readFile('myJSONFile.json', { encoding: 'utf8' });
fileContents = JSON.parse(fileContents);
fileContents.push(data);
await fs.writeFile('myJSONFile.json', JSON.stringify(fileContents, null, 2), { encoding: 'utf8' });
};
您需要读取当前文件,解析JSON内容,修改并保存修改后的内容:
const jsonString = fs.readFileSync(path);
const jsonObject = JSON.parse(jsonString);
jsonObject.push(item);
fs.writeFileSync(path, JSON.stringify(jsonObject));
我正在使用 node.js 进行一个项目,并且正在努力将正确位置的 JSON 对象放入我现有的数据中。我的文件目前看起来像这样:
[
{
"id": "001",
"name": "Paul,
"city": "London"
},
{
"id": "002",
"name": "Peter,
"city": "New York"
},
...
]
我试着这样安排我的数据:
var data = { id: id, name: name, city: city };
将相应的数据存储在这些变量中。然后我使用 var json = JSON.stringify(data)
并尝试
fs.appendFile("myJSONFile.json", json, function (err) {
if (err) throw err;
console.log('Changed!');
});
文件确实发生了变化,但新条目位于方括号之后。
[
{
"id": "001",
"name": "Paul,
"city": "London"
},
{
"id": "002",
"name": "Peter,
"city": "New York"
},
...
]{"id":"004","name":"Mark","city":"Berlin"}
如何将它与之前的条目放在一起?任何帮助将不胜感激!
您需要先读取文件,在您的情况下,您要在文件中存储一个数组。因此,您需要将您的对象推送到您从文件中读取的数组,并将结果写回文件(不是追加):
const fs = require('fs/promises');
// ...
const addToFile = async data => {
let fileContents = await fs.readFile('myJSONFile.json', { encoding: 'utf8' });
fileContents = JSON.parse(fileContents);
fileContents.push(data);
await fs.writeFile('myJSONFile.json', JSON.stringify(fileContents, null, 2), { encoding: 'utf8' });
};
您需要读取当前文件,解析JSON内容,修改并保存修改后的内容:
const jsonString = fs.readFileSync(path);
const jsonObject = JSON.parse(jsonString);
jsonObject.push(item);
fs.writeFileSync(path, JSON.stringify(jsonObject));