[Node.js] JSONをキレイに整形して出力する

小ネタです。 結論から言うと、JSON.stringify()の第2引数にnull、第3引数に数値を指定することで人間がパッと見て分かるよう整形した文字列が返されます。

const data = [
  {
    "season": "202004",
    "title": "乙女ゲームの破滅フラグしかない悪役令嬢に転生してしまった…",
    "company": "SILVER LINK."
  },
]

// 機械に優しい
const str1 = JSON.stringify(data);
console.log(str1)

// 人間に優しい
const str2 = JSON.stringify(data, null, 2);
console.log(str2)

実際に実行すると以下の通り。str1は直接プログラムから読み込むのに適しています。通常RESTfulAPIなどに渡す場合はこちらを利用します。

[{"season":"202004","title":"乙女ゲームの破滅フラグしかない悪役令嬢に転生してしまった…","company":"SILVER LINK."}]

str2は第3引数で渡した数値の分だけインデントされ人間がパッと見て分かる書式になっています。デバッグなどで利用する場合はこちらが便利ですね。

[
  {
    "season": "202004",
    "title": "乙女ゲームの破滅フラグしかない悪役令嬢に転生してしまった…",
    "company": "SILVER LINK."
  }
]

なお、第3引数で指定する数値は1〜10の間で指定し、それ以上大きい値は最大値である10として扱われるようです。

これが Number のときは、空白として使う空白文字の数を示します。この数の上限は10です (それより大きい数値は、単に 10 となります)。 1 より小さい値は空白を使わないことを示します。

※MDNより

それはさておき「はめふら」面白いですよね。

参考ページ