FS以特定方式写入JSON

FS write JSON in a specific manner

我想用FS写这种格式的文件,请问FS怎么实现呢?我试过使用 FS.writefiel 但它只是替换了其他内容,我试过使用 FS.appendfile 但它没有在 [ ] 内写入文件并且 VS 代码指出有错误。

[
{
"part1": "yes",
"finish": "no"
},{
"part2": "yes",
"finish": "yes"
}
]

如果这只是常规 JSON,它看起来是:

let data = [
  {
    part1: "yes",
    finish: "no"
  },{
    part2: "yes",
   finish: "yes"
  }
];

fs.writeFileSync('output.json', JSON.stringify(data));

解决方案 1:

var array = []

data = {
    "part1": "yes",
    "finish": "no"
}

data1 = {
    "part2": "yes",
"finish": "yes"
}

array.push(data)
array.push(data1)

array.toString()
const stringArray = JSON.stringify(array)
fs.writeFileSync('array.txt',stringArray)

你可以这样做。

  1. 首先创建一个数组。
  2. 然后将您的对象推入该数组。
  3. 然后使用.toString()方法将数组转换为字符串
  4. 之后使用 JSON.stringify() 方法将整个内容转换为字符串。
  5. 然后使用fs.writeFileSync()方法将其写入文本文件。

方案二:

  1. 首先在您的填充结构中创建一个名为 array.txt 的文件。
  2. 然后在array.txt文件中添加两个空方括号([])。
  3. 之后 运行 下面的代码。

您可以根据需要更改数据(JSON 对象)值。

const fs = require('fs')

var newArray = []

const readFile = fs.readFileSync('array.txt')
const array = JSON.parse(readFile)

data = {
    "part1": "yes",
    "finish": "no"
}

if(array.length == 0) {
    newArray.push(data)
    newArray.toString()
    const stringArray = JSON.stringify(newArray)
    fs.writeFileSync('array.txt',stringArray)
} else {
    const arrays = fs.readFileSync('array.txt')
    const ar = JSON.parse(arrays)
    ar.push(data)
    const newData = JSON.stringify(ar)
    fs.writeFileSync('array.txt',newData)
}