如何在node.js中读取/写入JSON文件

问题描述

我对node.js相当陌生,我想知道如何(或什至)可以读写JSON文件。我正在尝试创建可访问的惩罚历史。 理想情况下,我希望能够按照以下方式创建一些东西:

{
"punishments": {
    "users": {
      "<example user who has a punishment history>": {
        "punishment-1567346": {
          "punishment-id": "1567346","punishment-type": "mute","punishment-reason": "<reason>"
        },"punishment-1567347": {
          "punishment-id": "1567347","punishment-type": "ban","punishment-reason": "<reason>"
        }
      }
    }
  }
}

然后,我将有一种方法可以访问格式化的处罚历史记录。我真的不知道从哪里开始。

解决方法

使用NodeJS文件系统https://nodejs.org/dist/latest-v14.x/docs/api/fs.html

在这里,我已经使用writeFileSync API来写入文件,并使用readFileSync从文件中读取。另外,写时请不要忘记JSON.stringify(data),因为您正在将数据写到JSON文件中。

const fs = require("fs");
const path = require("path");

// Write Data
const data = {
"punishments": {
    "users": {
      "<example user who has a punishment history>": {
        "punishment-1567346": {
          "punishment-id": "1567346","punishment-type": "mute","punishment-reason": "<reason>"
        },"punishment-1567347": {
          "punishment-id": "1567347","punishment-type": "ban","punishment-reason": "<reason>"
        }
      }
    }
  }
};

fs.writeFileSync(path.join(__dirname,"outputfilepath","outputfile.json"),JSON.stringify(data),"utf8");

// Read data
const rData = fs.readFileSync(path.join(__dirname,"utf8");
const jsonData = JSON.parse(rData);

以下是工作示例, https://repl.it/repls/OutrageousInbornBruteforceprogramming#index.js

,

您可以使用名为fs的NodeJS内置库来执行读/写操作。

步骤1-导入fs

const fs = require('fs');

第2步-读取文件

let rawdata = fs.readFileSync('punishmenthistory.json');
let punishments= JSON.parse(rawdata);
console.log(punishments);

现在,您可以使用punishments变量来检查JSON文件中的数据。另外,您可以更改数据,但目前仅位于变量内部。

第3步-写入文件

let data = JSON.stringify(punishments);
fs.writeFileSync('punishmenthistory.json',data);

完整代码:

const fs = require('fs');

let rawdata = fs.readFileSync('punishmenthistory.json');
let punishments= JSON.parse(rawdata);
console.log(punishments);

let data = JSON.stringify(punishments);
fs.writeFileSync('punishmenthistory.json',data);

参考: https://stackabuse.com/reading-and-writing-json-files-with-node-js/

,

您可以阅读以下内容:

SS,CCC,NAME,2000
36,001,Albany County,70
36,003005,Allegany County,60
36,005,Bronx County,56
36,007,Broome County,72
36,009,Cattaraugus County,64
36,011,Cayuga County,013,Chautauqua County,66
36,015,Chemung County,75
36,017,Chenango County,65
36,019,Clinton County,68
36,021,Columbia County,62
36,023,Cortland County,025,Delaware County,53
36,027,Dutchess County,029,Erie County,74
36,031,Essex County,58
36,033,Franklin County,67

并且这样写:

const fs = require('fs')
function jsonReader(filePath,cb) {
    fs.readFile(filePath,(err,fileData) => {
        if (err) {
            return cb && cb(err)
        }
        try {
            const object = JSON.parse(fileData)
            return cb && cb(null,object)
        } catch(err) {
            return cb && cb(err)
        }
    })
}
jsonReader('./customer.json',customer) => {
    if (err) {
        console.log(err)
        return
    }
    console.log(customer.address) // => "Infinity Loop Drive"
})