将json格式的json内容写入Node js中的新文件

时间:2019-01-15 22:19:20

标签: node.js json fs

目标:使用Node js以json格式写入文件内容。手动打开文件后,内容应以json格式显示

我尝试了两个fs-extra模块功能-outputJsonSyncwriteFileSync来将json内容写入文件。他们将内容内联如下所示

{"a":"1", "b":"2"}

但是,当我手动打开文件时,我希望看到以下内容:

{
"a" : "1",
"b" : "2"
}

我对数据尝试了jsomepretty-data,如下所示:

fs.outputJsonSync(jsome(data))
fs.outputJsonSync(pd.json(data))

他们还仅在向数据内联写入数据的情况下,向数据中添加了额外的\\ntabs,但未以格式化的样式打开。

任何输入均受到高度赞赏。谢谢!

[更新]

其他情况:

const obj = {"a":"1", "b":"2"}
var string = "abc" + "splitIt" + obj
doSomething(string)

在函数实现内部:

doSomething(string){
var arr =  string.split("splitIt")
var stringToWrite = JSON.stringify(arr[1], null, '  ').replace(/: "(?:[^"]+|\\")*"$/, ' $&')
fs.writeFileSync(filePath, stringToWrite)
}

打开文件时显示以下输出:

"[object Object]"

2 个答案:

答案 0 :(得分:1)

有了对象后,您可以指定一个替换函数以换行符分隔每个键值对,然后使用正则表达式修剪前导空格,然后使用另一个正则表达式在{{之前插入一个空格1}}的键值对。然后,只需将格式化的字符串写入文件:

:

不过,您可能会发现前导空格更具可读性:

const obj = {"a":"1", "b":"2"};
const stringToWrite = JSON.stringify(obj, null, ' ')
  // Trim leading spaces:
  .replace(/^ +/gm, '')
  // Add a space after every key, before the `:`:
  .replace(/: "(?:[^"]+|\\")*",?$/gm, ' $&');
console.log(stringToWrite);

答案 1 :(得分:1)

JSON.stringify,有两个可选参数,第一个是替换函数,第二个(您想要的)用于间距。

const obj = {"a":"1", "b":"2"}
console.log(JSON.stringify(obj, null, 2))

这将为您提供:

{
  "a": "1",
  "b": "2"
}