LoginSignup
47
29

More than 5 years have passed since last update.

JSON.stringifyの出力結果を整形して可読性を向上させる

Last updated at Posted at 2018-08-29

JSON.stringify()の出力結果が見辛い

JSON.stringify(value)の出力結果が整形されておらず見辛くて困ってた。
初心に戻りドキュメントを見てみると、オプションでサクッと整形できることがわかったのでメモ。

第3引数に空白文字を渡すと出力結果にインデントを付与することができる模様。

構文

JSON.stringify(value[, replacer[, space]])

引数

value
JSON 文字列に変換する値。

replacer Optional
文字列化の手順の挙動を変更する関数、または値のオブジェクトを JSON 文字列に含めるプロパティを選択するホワイトリストとして機能する String と Number オブジェクトの配列。もしこの値が null であるか提供されない場合は、結果の文字列にオブジェクトのすべてのプロパティが含まれます。

space Optional
出力する JSON 文字列に可読性を目的に空白を挿入するために使う String または Number オブジェクト。これが Number のときは空白として使う空白文字の数を示します。この数字は上限が 10 に設定されていて 10 より大きい場合 10 となります。1 より小さい値は空白を使わないことを示します。これが String のときはその文字列(10 文字より長い場合はその最初の 10 文字)が空白として使われます。もしこの引数が提供されない(または null である)場合は、空白は使用されません。

JSON.stringify() - JavaScript | MDN

知らなかった。

第1引数のみ渡した場合

JSON.stringify(err);

{"message":"NaN を (class) に変換できません。","name":"InternalError","fileName":"event/pr (hoge bot(testing))","lineNumber":47,"stack":"\tat event/pr (hoge  bot(testing)):47 (sendPrRestart)\n\tat コード (hoge  bot(testing)):45\n\tat コード (hoge  bot(testing)):13 (doPost)\n"}

見辛い(´・_・`)

第3引数にタブ文字を渡した場合

JSON.stringify(err, null , "\t");

{
    "message": "NaN を (class) に変換できません。",
    "name": "InternalError",
    "fileName": "event/pr (hoge  bot(testing))",
    "lineNumber": 47,
    "stack": "\tat event/pr (hoge bot(testing)):47 (sendPrRestart)\n\tat コード (hoge bot(testing)):45\n\tat コード (hoge bot(testing)):13 (doPost)\n"
}

見やすい\(^o^)/

第2引数のreplacerには関数や配列も渡せるようなので、フィルターかけたり文字列を変換することもできるっぽい。

便利。

47
29
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
47
29