我正在使用fs.readFileSync(fileName,'utf8')读取JSON文件;但结果包括换行符,输出结果如下:
"{\r\n \"name\":\"Arka\",\r\n \"id\": \"13\"\r\n}"
如何避免这些字符?
我的本地文件如下:
{
"name":"Arka",
"id": "13"
}
答案 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,但您不需要这样做。无论有没有新行,结果都是一样的。