JSON フォーマッター

JSONを整形・圧縮・バリデーションします。インデントを選択して読みやすく整形、または1行に圧縮できます。構文エラーもその場で確認できます。

JSON 入力
整形結果 有効な JSON 無効な JSON
{{ result.lines }} 行 / {{ result.bytes.toLocaleString() }} バイト
{{ result.error }}

JSONフォーマッターとは

JSONフォーマッターは、1行に詰まった読みにくいJSONを字下げつきの形に整え直したり、逆に空白を取り除いて1行へ圧縮したりするツールです。入力を解析した時点で構文が正しいかどうかも判定するため、APIのレスポンスや設定ファイルを貼り付けるだけで、整形・圧縮・検証の3つをまとめて行えます。字下げはスペース2つ・スペース4つ・タブから選べます。

判定にはブラウザ自身のJSONパーサーを使っているため、「このツールでは通るのに実行環境では落ちる」という食い違いが起きません。処理はすべてお使いの端末の中で完結し、貼り付けたJSONがサーバーへ送信されることはありません。認証トークンや個人情報を含むAPIレスポンスでも、内容を外へ出さずに整形できます。

JSONフォーマッターの使い方

  1. JSONを貼り付ける 左側の入力欄にJSONを貼り付けます。手元に試すデータがなければ「サンプル」ボタンで例を読み込めます。
  2. 字下げの幅を選ぶ スペース2つ・スペース4つ・タブから選びます。プロジェクトの整形規則に合わせておくと、そのまま貼り戻せます。
  3. 有効・無効の表示を確かめる 入力と同時に「有効なJSON」「無効なJSON」のバッジが切り替わります。無効な場合はパーサーが返したエラーメッセージがそのまま表示されるため、何行目のどの文字で行き詰まったかを追えます。
  4. 整形済みか圧縮済みかを選んでコピーする 「整形済みをコピー」は字下げつきの結果を、「圧縮済みをコピー」は空白を取り除いた1行の結果をクリップボードへ入れます。
  5. 行数とバイト数を確認する 行数は整形後の結果を、バイト数は圧縮後の結果をUTF-8で数えた値です。転送量を見積もるときは後者を見てください。

使いこなすためのヒント

  • JSON(JavaScript Object Notation)のキーは必ずダブルクォートで囲む必要があります。シングルクォートは無効です。
  • 末尾のカンマ({"a":1,})は JSON 仕様では無効です。JavaScript の配列・オブジェクトとは異なる点に注意してください。
  • 数値は 1.5e3(指数表記)も有効な JSON です。ただし NaN・Infinity は無効です。
  • 文字列中のダブルクォートは \" にエスケープが必要です。改行は \n、タブは \t を使います。
  • 圧縮(Minify)した JSON はファイルサイズを小さくできますが、可読性がゼロになります。API レスポンスやデータ転送には圧縮版、設定ファイルには整形版が適しています。

JSONフォーマッターの活用シーン

APIレスポンスの中身を読む

1行で返ってきたレスポンスを整形すれば、入れ子の深さや配列の要素数が目で追えるようになります。開発中の動作確認やバグ調査でいちばん多い使い方です。

設定ファイルの構文エラーを突き止める

アプリが設定ファイルを読み込めないとき、貼り付けて検証すれば、末尾カンマやクォートの閉じ忘れといった原因をその場で特定できます。

転送量を減らすために圧縮する

整形されたJSONをそのままAPIレスポンスや埋め込みデータとして返すと、字下げの空白ぶんだけ無駄に転送量が増えます。配信用には圧縮版を使ってください。

ドキュメントやIssueに貼るコード例を整える

仕様書やバグ報告に載せるリクエスト例・レスポンス例を、字下げの揃った読みやすい形に直せます。

他の形式へ変換する前の下ごしらえ

構文が正しいことを先に確かめておけば、JSONからTypeScript型定義やJSONからXMLといった変換ツールへ渡したときに、変換側で原因の分かりにくいエラーに悩まされずに済みます。

JSONに関する用語集

JSON
JavaScript Object Notationの略で、RFC 8259が定めるデータ交換形式です。オブジェクト・配列・文字列・数値・真偽値・nullの6種類だけで構成され、言語を問わず読み書きできる点から、Web APIの標準的な形式になっています。
整形(プリティプリント)
入れ子の深さに応じて字下げと改行を入れ、人が読める形に組み直すことです。データの中身は変わらず、見た目だけが変わります。
圧縮(ミニファイ)
意味に関わらない空白・改行をすべて取り除き、1行にまとめることです。バイト数が減るため転送量を抑えられますが、人が読むには向きません。
バリデーション(構文検証)
入力がJSONの文法に沿っているかを確かめることです。このツールはブラウザのパーサーに解析させ、失敗したときのエラーメッセージをそのまま表示します。
エスケープシーケンス
文字列の中でそのままでは書けない文字を、バックスラッシュを使って表す書き方です。ダブルクォートは\"、改行は\n、タブは\tと書きます。
キーの順序
JSON自体はオブジェクトのキーに順序を定めていません。このツールはJavaScriptのオブジェクトを経由するため、"1"や"2"のように整数として読める形のキーだけが昇順へ並べ替えられます。それ以外のキーは書いた順のまま保たれます。
UTF-8
RFC 8259がJSONに用いるよう定めている文字符号化方式です。日本語などASCII以外の文字は1文字あたり複数バイトを占めるため、文字数とバイト数は一致しません。

よくある質問

JSON はデータ交換フォーマットの仕様であり、JavaScript のオブジェクトリテラルのサブセットです。主な違いは①キーは必ずダブルクォートが必要、②末尾カンマ不可、③undefined・関数・NaN・Infinity は使えない、の3点です。

書けません。JSON の仕様にコメント構文は存在しません。コメントを書きたい場合は、JSON5・JSONC(VS Code の設定ファイル形式)・YAML などの代替フォーマットの使用を検討してください。

RFC 8259 では JSON は UTF-8 エンコーディングを使用することと定めています。UTF-16・UTF-32 は技術的には動作する実装もありますが、相互運用性の観点から UTF-8 が推奨されます。

JSON の仕様上は区別がなく、すべて「number」型として定義されています。ただしほとんどの言語では整数・浮動小数点数に変換されます。非常に大きな整数(JavaScript の Number.MAX_SAFE_INTEGER を超える値)は精度が失われる可能性があります。
ツールくん

余談ですが ― JSON が XML に勝った理由

2000年代初頭、Web API のデータ形式は XML が主流 でした。しかし 2001 年に Douglas Crockford が JSON を提唱し、2010 年代以降は JSON が事実上の標準となっています。理由は単純で、JSON の方が軽く、JavaScript で扱いやすく、人が読みやすいからです。

同じデータを XML と JSON で表すと、JSON はバイト数が約 30〜50% 少なくなるケースが多いです。モバイル通信が細かった時代には、この差がアプリの応答速度に直結していました。

RFC 8259 では JSON のキーの重複について「SHOULD NOT(すべきでない)」と述べるにとどまり、明確な禁止ではありません。そのため {"a":1,"a":2} は「構文上は有効だが動作は未定義」という扱いです。実際にはほとんどのパーサーが後勝ちで処理しますが、同一キーが重複している場合は意図しないバグの原因になります。