Javascript 格式化JSON并使用NodeJS保存

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

我有几个使用工具生成的JSON文件。问题是,即使这个JSON是有效的,它们也没有任何缩进

我已经试过这样的方法:

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代替四个空格。哦,是的,那太好了。我真的忽略了这样一个事实,即我将数据作为字符串接收。谢谢你花时间。