sta*_*r67 0 javascript arrays fs node.js
如何在写入Node Js中的文件时将对象推入数组?我目前有以下工作代码
fs.appendFile("sample.json", JSON.stringify(data, undefined, 2) + ",");
Run Code Online (Sandbox Code Playgroud)
其中 data 是一个对象,比如
{
name:'abc',
age: 22,
city: 'LA'
}
Run Code Online (Sandbox Code Playgroud)
追加后,结果如下
{
name:'abc',
age: 22,
city: 'LA'
},
{
name:'def',
age: 25,
city: 'MI'
},
Run Code Online (Sandbox Code Playgroud)
我在这里看到 2 个问题。1.末尾的尾随逗号 2.无法形成数组并将对象推入其中
任何线索将不胜感激
Append 将您的数据附加到一个文件中,这里数据被视为一个字符串,所有附加将等于将字符串连接到另一个字符串。
相反,这里需要首先读取文件并将其转换为数据结构,对于此示例,它可以是对象数组并将该数据结构转换为字符串并将其写入文件。
写入文件
fs.writeFileSync('sample.json', JSON.stringify([data], null, 2));
Run Code Online (Sandbox Code Playgroud)
示例.json
[
{
"name": "abc",
"age": 22,
"city": "LA"
}
]
Run Code Online (Sandbox Code Playgroud)
从文件中读取
const fileData = JSON.parse(fs.readFileSync('sample.json'))
fileData.push(newData)
Run Code Online (Sandbox Code Playgroud)
将追加到前一个的新数据写入文件
fs.writeFileSync('sample.json', JSON.stringify(fileData, null, 2));
Run Code Online (Sandbox Code Playgroud)
示例.json
[
{
"name": "abc",
"age": 22,
"city": "LA"
},
{
"name": "abc",
"age": 22,
"city": "LA"
}
]
Run Code Online (Sandbox Code Playgroud)