NodeJS JSON文件不带换行符读取

时间:2017-11-19 16:31:23

标签: json node.js

我正在使用fs.readFileSync(fileName,'utf8')读取JSON文件;但结果包括换行符,输出结果如下:

"{\r\n    \"name\":\"Arka\",\r\n    \"id\": \"13\"\r\n}"

如何避免这些字符?

我的本​​地文件如下:

{
  "name":"Arka",
  "id": "13"
}

2 个答案:

答案 0 :(得分:3)

使用fs.readFileSync()时无需读取JSON。这要求您在try用法周围编写catch / fs.readFileSync()块,然后对文件数据使用JSON.parse()。相反,您可以在Node中要求JSON文件,就像它们是包一样。它们将被解析为就像您以字符串形式读取文件然后使用JSON.parse()一样,这简化了将JSON读取到一行的过程。

let data = require(fileName)
console.log(data) // { name: 'Arka', id: '13' }

如果要将data内的已解析JS对象序列化为没有新行和&的文件。回车符号你可以使用JSON.stringify()只传入data将JSON字符串写入文件。

const {promisify} = require('util')
const writeFile = util.promisify(require('fs').writeFile)
const data = require(fileName)

const serializeJSON = (dest, toJson) => writeFile(dest, JSON.stringify(toJson))

serializeJSON('./stringify-data.json', data)
  .then(() => console.log('JSON written Successfully'))
  .catch(err => console.log('Could not write JSON', err))

答案 1 :(得分:0)

您可以阅读该文件,然后使用正则表达式删除它们:

var rawJson = fs.readFileSync(fileName, 'utf8');
rawJson = rawJson.replace(/\r|\n/g, '');

请记住,虽然使用JSON.parse解析JSON,但您不需要这样做。无论有没有新行,结果都是一样的。