Node.js 将json格式的json内容写入节点js中的新文件
目标:使用NodeJS以json格式编写文件内容。手动打开文件后,内容应以json格式显示 我尝试了两个fs额外模块函数——outputJsonSync或writeFileSync,将json内容写入文件。他们将内容内联编写如下Node.js 将json格式的json内容写入节点js中的新文件,node.js,json,fs,Node.js,Json,Fs,目标:使用NodeJS以json格式编写文件内容。手动打开文件后,内容应以json格式显示 我尝试了两个fs额外模块函数——outputJsonSync或writeFileSync,将json内容写入文件。他们将内容内联编写如下 {"a":"1", "b":"2"} 但是,当我手动打开文件时,我希望看到以下内容: { "a" : "1", "b" : "2" } 我尝试并使用以下数据: fs.outputJsonSync(jsome(data)) fs.outputJsonSync(pd.j
{"a":"1", "b":"2"}
但是,当我手动打开文件时,我希望看到以下内容:
{
"a" : "1",
"b" : "2"
}
我尝试并使用以下数据:
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]"
拥有对象后,可以指定替换函数以换行分隔每个键值对,然后使用正则表达式修剪前导空格,然后使用另一个正则表达式在键值对的:之前插入空格。然后,只需将格式化字符串写入文件: 常量obj={a:1,b:2}; const stringToWrite=JSON.stringifyobj,null,' //修剪前导空格: .替换/^+/gm, //在每个键之后,在“:”之前添加一个空格: .replace/:?:[^]+\124;\\*,?$/gm,“$&”;
console.logstringToWrite stringify有两个可选参数,第一个是替换函数,第二个是间距
const obj = {"a":"1", "b":"2"}
console.log(JSON.stringify(obj, null, 2))
这将为您提供:
{
"a": "1",
"b": "2"
}
当我尝试使用fs-fs.outputFileSyncfilePath、stringToWrite来编写stringToWrite时,在打开新文件时,我仍然可以看到数据内联有额外的斜杠,该文件使用writeFileSync创建的效果很好。stringToWrite中的所有新行仍然存在,并且没有斜杠。它看起来也可以与outputFileSync一起使用。我无法重现你的问题。请仔细检查一下谢谢!这在给定的示例中效果很好。我的实际情况是,我将对象obj附加到一个字符串,以将其传递给我的函数,该函数只接受一个参数。稍后在函数内部,我使用split来获取实际数据-obj。当我使用它时,我只在文件中看到[Object]。在新代码中编辑了要澄清的问题,arr[1]是一个字符串,而不是一个对象,因此JSON.stringifyarr[1]。。。没有任何意义-而且,作为一个字符串,纯字符串内容本身应该是结果,而不是对象。你确定你发布的代码就是你实际使用的代码吗?似乎不需要重复这个问题