目标:使用Node js将文件内容写入json格式。手动打开文件后,内容应以json格式显示
我尝试了 fs-extra
模块函数 - outputJsonSync
或 writeFileSync
将 json 内容写入文件。他们内嵌的内容如下
{"a":"1", "b":"2"}
但是,我希望在手动打开文件时看到如下内容:
{
"a" : "1",
"b" : "2"
}
我试过jsome和 pretty-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/