如何将 JSON 数据附加到现有 JSON 文件 node.js

How to append JSON data to existing JSON file node.js

如何使用逗号“,”作为分隔符附加现有 JSON 文件

anchors = [ {  "title":"  2.0 Wireless " }  ]
fs.appendFileSync('testOutput.json', JSON.stringify(anchors));

当前代码的输出是这样的

[
   {
     "title":"  2.0 Wireless "
   }
 ]
 [
   {
     "title":"  Marshall Major II "
   }
]

如何使用逗号“,”作为分隔符以正确的格式获取此内容

我想要这样的东西

[
   {    
    "title":"  2.0 Wireless "
   },
   {
     "title":"  Marshall Major II "
   }
]

试试这个。不要忘记定义 anchors 数组。

var data = fs.readFileSync('testOutput.json');
var json = JSON.parse(data);
json.push(...anchors);

fs.writeFile("testOutput.json", JSON.stringify(json))

我创建了两个小函数来处理要追加的数据。

  1. 第一个函数将:读取数据并将JSON-string转换为JSON-array
  2. 然后我们将新数据添加到 JSON-array
  3. 我们将JSON-array转换为JSON-string并写入文件

示例:您要添加数据 { "title":" 2.0 Wireless " } 到文件 my_data.json同一个文件夹根。只需调用 append_data (file_path , data ) ,

如果文件存在,它将在 JSON 文件中追加数据。或者它将创建文件并向其中添加数据。

data = {  "title":"  2.0 Wireless " }
file_path = './my_data.json'
append_data (file_path , data )

完整代码在这里:

   const fs = require('fs');
   data = {  "title":"  2.0 Wireless " }
   file_path = './my_data.json'
   append_data (file_path , data )

   async function append_data (filename , data ) {

    if (fs.existsSync(filename)) {
        read_data = await readFile(filename)
        if (read_data == false) {
            console.log('not able to read file')
        }
        else {
            read_data.push(data)
            dataWrittenStatus = await writeFile(filename, read_data)
            if dataWrittenStatus == true {
              console.log('data added successfully')
            }
           else{
              console.log('data adding failed')
            }
        }
      else{
          dataWrittenStatus = await writeFile(filename, [data])
          if dataWrittenStatus == true {
              console.log('data added successfully')
          }
          else{
             console.log('data adding failed')
           }
      }
   }



    async function readFile  (filePath) {
      try {
        const data = await fs.promises.readFile(filePath, 'utf8')
        return JSON.parse(data)
      }
     catch(err) {
         return false;
      }
    }

    async function writeFile  (filename ,writedata) {
      try {
          await fs.promises.writeFile(filename, JSON.stringify(writedata,null, 4), 'utf8');
          return true
      }
      catch(err) {
          return false
      }
    }