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

标签 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))

它们还仅在数据中添加额外的 \\n选项卡 来内联写入数据,但不会以格式化样式打开。

任何意见都将受到高度赞赏。谢谢!

[更新]

其他场景:

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]"

最佳答案

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

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);

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

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

关于node.js - Node js中将json格式的json内容写入新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54207701/

相关文章:

json - 为什么 Minium Developer 不读取 JSON 文件?

ruby-on-rails - 为什么我的 JSON.parse 失败了? Rails 上的 Ruby

javascript - 如何获取 fs.rename 的结果

javascript - 什么是 fs 以及如何安装它?

javascript - 错误: Cannot enqueue Query after invoking quit

javascript - 在 sinon 中创建一个假的 object.method() "from scratch"?

javascript - 无法使用 mongoose.find 查询日期

javascript - 如何从终端运行 esnext 文件

javascript - 从一个 Array 对象中提取键值,并使用带有下划线 javascript 的提取值从其他对象中过滤

node.js - EACCES : permission denied with Node JS