Javascript 格式化JSON并使用NodeJS保存
我有几个使用工具生成的JSON文件。问题是,即使这个JSON是有效的,它们也没有任何缩进 我已经试过这样的方法:Javascript 格式化JSON并使用NodeJS保存,javascript,node.js,json,Javascript,Node.js,Json,我有几个使用工具生成的JSON文件。问题是,即使这个JSON是有效的,它们也没有任何缩进 我已经试过这样的方法: fs.readdir(path, function (err, files) { if (err) { return console.log('Unable to scan directory: ' + err); } files.forEach((file) => { const pathToFile = `../j
fs.readdir(path, function (err, files) {
if (err) {
return console.log('Unable to scan directory: ' + err);
}
files.forEach((file) => {
const pathToFile = `../jsonFiles/${file}`;
fs.readFile(pathToFile, 'utf-8', (err, data) => {
fs.writeFile(pathToFile, JSON.parse(JSON.stringify(data, null, 4)), (err) => {
if (err) {
console.log(err)
}
});
});
});
});
只需使用JSON.stringifydata,null,4而不是JSON.parseJSON.stringify。。。并将utf8添加到fs.writeFile的选项中:
编辑:我又读了你的问题。我认为您切换了数据的解析和字符串化,将其作为字符串读取。我修正了它:
fs.readdir(path, function (err, files) {
if (err) {
return console.log('Unable to scan directory: ' + err);
}
files.forEach((file) => {
const pathToFile = `../jsonFiles/${file}`;
fs.readFile(pathToFile, 'utf-8', (err, data) => {
fs.writeFile(pathToFile, JSON.stringify(JSON.parse(data), null, 4), 'utf8', (err) => {
if (err) {
console.log(err)
}
});
});
});
});
只需使用JSON.stringifydata,null,4而不是JSON.parseJSON.stringify。。。并将utf8添加到fs.writeFile的选项中:
编辑:我又读了你的问题。我认为您切换了数据的解析和字符串化,将其作为字符串读取。我修正了它:
fs.readdir(path, function (err, files) {
if (err) {
return console.log('Unable to scan directory: ' + err);
}
files.forEach((file) => {
const pathToFile = `../jsonFiles/${file}`;
fs.readFile(pathToFile, 'utf-8', (err, data) => {
fs.writeFile(pathToFile, JSON.stringify(JSON.parse(data), null, 4), 'utf8', (err) => {
if (err) {
console.log(err)
}
});
});
});
});
谢谢你的回复。在我的例子中,这只会将大量的“\”字符添加到json@Anon我也编辑了我的答案。请看一看。我想我在上下文中找到了真正的问题。谢谢!顺便说一句:您可以使用JSON.stringifyJSON.parsedata,null,“\t”来使用tab代替四个空格。哦,是的,那太好了。我真的忽略了这样一个事实,即我将数据作为字符串接收。谢谢你花时间。谢谢你的回复。在我的例子中,这只会将大量的“\”字符添加到json@Anon我也编辑了我的答案。请看一看。我想我在上下文中找到了真正的问题。谢谢!顺便说一句:您可以使用JSON.stringifyJSON.parsedata,null,“\t”来使用tab代替四个空格。哦,是的,那太好了。我真的忽略了这样一个事实,即我将数据作为字符串接收。谢谢你花时间。