在日常开发中,经常会跟json文件打交道。一般如果保存一个json文件,不做处理的话,内容会被直接以
紧凑的格式保存在文件里。如果要查看对应的内容会比较不方便,需要再格式化处理下。本文就列举一些,在node环境下json文件如何快速格式化处理的方案。
1、方式
a、原生方案
JSON.stringify(value[, replacer [, space]])- 其中
space主要用于美化输出,如果参数是个数字,它代表有多少的空格;上限为 10。该值若小于 1,则意味着没有空格;如果该参数为字符串(当字符串长度超过 10 个字母,取其前 10 个字母),该字符串将被作为空格;如果该参数没有提供(或者为 null),将没有空格
const fs = require("fs");
const path = require("path");
const writeJsonData = (filePath, data) => {
const directoryPath = path.dirname(filePath);
if (!fs.existsSync(directoryPath)) {
fs.mkdirSync(directoryPath, { recursive: true });
}
const jsonDataStr = JSON.stringify(data, null, 2);
fs.writeFileSync(filePath, jsonDataStr, 'utf8');
console.log(`JSON 数据已成功写入到 ${filePath} 文件`);
}
const data = {
"display_name": "Bike Rush",
"tag_line": "",
"game_helper": true,
"landscape": false,
"game_menu": "{\"left\":false,\"top\":-1}",
}
const filePath = "./game.json";
writeJsonData(filePath, data);
b、使用第三方插件:prettier,js-beautify等
const fs = require("fs");
const path = require("path");
const prettier = require('prettier');
const writeJsonData = (filePath, data) => {
const directoryPath = path.dirname(filePath);
if (!fs.existsSync(directoryPath)) {
fs.mkdirSync(directoryPath, { recursive: true });
}
const jsonDataStr = JSON.stringify(data);
const formattedJson = prettier.format(jsonDataStr, {
parser: "json",
tabWidth: 2,
useTabs: false,
trailingComma: "none",
printWidth: 80
});
fs.writeFileSync(filePath, formattedJson, 'utf8');
console.log(`JSON 数据已成功写入到 ${filePath} 文件`);
}
const data = {
"display_name": "Bike Rush",
"tag_line": "",
"game_helper": true,
"landscape": false,
"game_menu": "{\"left\":false,\"top\":-1}",
}
const filePath = "./game.json";
writeJsonData(filePath, data);
也可以使用命令行工具处理
npx prettier --write --tab-width 2 --print-width 100 game.json
c、vscode 自带格式化
直接右键格式化文件
2、注意:
- 一行(紧凑格式):适合数据量大且对可读性要求不高的场景,节省空间。
- 多行(格式化 / 美化):适合需要人工阅读和调试的场景,提高可读性
- 一般如果不是一些需要特殊的
美化方式,使用原生默认的就可以快速解决了。