格式化json文件

734 阅读1分钟

在日常开发中,经常会跟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、注意:

  • 一行(紧凑格式):适合数据量大且对可读性要求不高的场景,节省空间。
  • 多行(格式化 / 美化):适合需要人工阅读和调试的场景,提高可读性
  • 一般如果不是一些需要特殊的美化方式,使用原生默认的就可以快速解决了。

3、参考