JSON整形・構文チェック
JSONの構文を確認し、スペース2個・4個・Tabで整形するか、1行に圧縮できます。検証後の結果はコピーまたはダウンロードできます。
入力はブラウザ内で処理します。数値の表記、キーの順序、文字列のエスケープをそのまま保持します。構文エラーの自動修復は行いません。
JSONはこのブラウザ内で処理します。アップロードや自動保存はされず、ページを再読み込みすると消去されます。
入力はUTF-16コード単位で100,000まで、入れ子は64階層まで、値は5,000個までです。入力内容またはインデントを変更した後は、もう一度実行してください。
JSONを整形する方法
- JSONを貼り付け、インデントをスペース2個、スペース4個、Tabから選びます。
- 「構文を検証して整形」を選ぶと、構文を確認してインデントを加えます。整形用の空白を取り除く場合は「1行に圧縮」を選びます。文字列内の空白はそのまま残ります。
- 構文エラーが表示されたら、行・列の案内を参考に入力を修正して、もう一度実行してください。検証に通った後、結果をコピーまたはダウンロードできます。
整形後も保持される内容
変更するのは文字列の外側にある整形用の空白だけです。大きな整数、負のゼロ、指数表記、文字列のエスケープ、キーの順序、重複キーは元の表記のまま保持します。数値をJavaScriptの数値型に変換してから処理することもありません。
重複キーも出力に残りますが、読み込むプログラムによっては一方の値だけが使われるなど、扱いが異なります。構文が正しくても、APIやJSON Schemaの仕様を満たすとは限りません。
標準JSONの値であるオブジェクト、配列、文字列、数値、真偽値、nullに対応しています。コメント、シングルクォートの文字列、末尾のカンマ、NaN、Infinityは受け付けません。
入力はUTF-16コード単位で100,000まで、オブジェクトや配列の入れ子は64階層まで、値は5,000個までです。オブジェクトと配列もそれぞれ1つの値として数えます。絵文字など一部の文字はコード単位を2つ使います。整形結果は2,000,000コード単位までです。超える場合はインデントを減らすか、1行に圧縮してください。エラーの行・列番号は1から始まり、TabとUTF-16コード単位をそれぞれ1列として数えます。表示上の位置と一致しない文字もあります。
入力内容はアップロードや自動保存されません。入力またはインデントを変更すると、前の結果は消去されます。ダウンロードでは別のJSONファイルを作成し、元のファイルを上書きしません。
関連するテキストツール
JSONを整形して構文エラーを探し、結果を確認する
ツールに戻る整形して、レスポンスの構造を確認する
APIのレスポンスが1行にまとまっていると、どのフィールドがオブジェクトや配列の中にあるのか見分けにくくなります。JSONを貼り付け、スペース2個・4個・Tabからインデントを選び、「構文を検証して整形」を選択してください。文字列の外側に改行とインデントを加えるため、入れ子の関係を追いやすくなります。
たとえば、{"name":"Mina","active":true} は、nameとactiveが別々の行に表示されます。「1行に圧縮」を選ぶと、トークンの間にある整形用の空白を取り除きます。「Mina Lee」のように文字列の値に含まれる空白は、データの一部なので残ります。
入力できるのはオブジェクトや配列のほか、文字列、数値、真偽値、nullです。整形で変わるのはJSONの表示方法です。キー名や値を変更したり、受け取り側にとって適切なデータかを判定したりする機能ではありません。
行・列の案内から構文エラーを探す
構文チェックで分かるのは、解析が止まった位置です。書き手が意図した内容までは判断できず、表示位置が最初の間違いより後になることもあります。案内された位置を起点に、直前の値、カンマ、コロン、引用符を確かめてください。
この例では、statusとdataの間にカンマがありません。エラー位置は1行目の16列目、dataの先頭にあるダブルクォートです。カンマを自分で追加し、もう一度実行してください。修正後のJSONと、1行に圧縮した結果を表に示します。
オブジェクトのキーと文字列はダブルクォートで囲みます。コメント、シングルクォートの文字列、末尾のカンマ、NaN、Infinityは受け付けません。数値の001のような先頭ゼロも無効です。APIの仕様でそのフィールドが文字列型と定義されている場合に限り、"001"のように引用符で囲んでください。
| 段階 | JSON |
|---|---|
| 修正前 | {"status":"ok" "data":{"id":1042,"active":true}} |
| カンマを追加した入力 | {"status":"ok","data":{"id":1042,"active":true}} |
| 1行に圧縮した結果 | {"status":"ok","data":{"id":1042,"active":true}} |
構文が正しくてもAPIの仕様に合うとは限らない
構文チェックで確認できるのは、JSONとしての文法に合っているかどうかです。必須フィールド、キー名、値の型、日付形式、アプリ固有のルールまでは検証しません。たとえば、{"active":"true"} と {"active":true} はどちらも有効なJSONですが、前者は文字列、後者は真偽値です。APIが真偽値を求める場合、整形しても文字列は自動で変換されません。
同じオブジェクト内に重複したキーがある場合も注意が必要です。このツールは出現したキーと順序をそのまま保持し、どの値を採用するか判断しません。RFC 8259はキー名を一意にするよう推奨しており、重複があると受け取り側の動作は予測できないと説明しています。どちらの値が正しいかは、元データやAPIの仕様で確認してください。
数値の表記と文字列のエスケープを保持する
このツールはJSONのトークンを直接扱い、文書全体をJavaScriptの数値に変換しません。そのため数値の表記、キーの順序、重複キー、文字列内のエスケープが出力に残ります。たとえば9007199254740993は同じ桁のまま、1e3も1000に書き換えられません。
これはこのツールが出力する文字列についての説明で、次に読むプログラムまで同じ精度を保つ保証ではありません。受け取り側の数値型によっては、大きな整数を正確に扱えないことがあります。RFC 8259も、一般的な倍精度数値の範囲と精度による相互運用上の制約を説明しています。識別子を文字列にするのは、APIの仕様で文字列と定義されている場合に限ってください。すべての数値を文字列に変える方法は適切ではありません。
1行に圧縮すると、文字列の外側にある整形用の空白は取り除かれます。文字列内の文字は値の一部なので、空白や "\u0061\n" のようなエスケープ表記もデコードせず、そのまま残します。
| 入力トークン | 出力トークン | 保持される内容 |
|---|---|---|
| 9007199254740993 | 9007199254740993 | 大きな整数の各桁 |
| 1e3 | 1e3 | 指数表記 |
| -0 | -0 | 負のゼロ |
| "a b" | "a b" | 文字列内の空白 |
入力と出力の上限を確認する
入力はUTF-16コード単位で100,000まで、オブジェクトや配列の入れ子は64階層まで、値は5,000個までです。オブジェクトと配列もそれぞれ1つの値として数えます。絵文字など一部の文字は複数のコード単位を使い、組み合わせた絵文字はさらに多くなる場合があります。整形結果は2,000,000コード単位までです。上限を超える場合はインデントを減らすか、1行に圧縮してください。圧縮結果は入力の上限より大きくなりません。
エラー位置の行・列番号は1から始まります。Tabは1列、UTF-16コード単位も1つにつき1列として数えます。画面では1つの記号に見えても、補助文字は2列として数える場合があります。表示された列を目安に、前後の文字も確認してください。
JSONはブラウザ内で処理し、サイトにはアップロードされず、自動保存もされません。ページを再読み込みすると入力内容が消えます。入力やインデントを変更すると、前の結果も消去されるため、コピーやダウンロードの前にもう一度実行してください。ダウンロードでは別のJSONファイルが作成され、元のファイルは上書きされません。
2つのバージョンを比べる場合は、先に同じインデントで整形してください。テキスト差分ツールでは行ごとの差を確認できますが、JSONとしての意味が同じかどうかは判定しません。文字数カウンターはテキストの長さを調べるときに使えます。
JSONの整形についてよくある質問
構文エラーを自動で修正できますか?
できません。構文エラーと、表示できる場合は行・列の位置を案内します。カンマ、引用符、値の不足などは自分で修正してから、もう一度実行してください。
1行に圧縮しても空白が残るのはなぜですか?
圧縮するのはJSONのトークン間にある空白です。「Mina Lee」のように文字列の中にある空白は値の一部なので、結果にも残ります。
重複したキーは出力に残りますか?
残ります。このツールは重複キーとその順序をそのまま出力します。後からJSONを読むプログラムによって扱いが異なるため、意図しない重複は元データで修正してください。
検証に通ればAPIでも受け付けられますか?
構文が正しいことは確認できますが、APIが要求するフィールド、値の型、その他の仕様までは検証しません。APIの仕様を別途確認してください。
参考資料
- RFC 8259:JSONデータ交換形式(英語)JSONの構文、値、オブジェクト、数値を定めるIETF仕様です。第4節と第6節では、重複キーと数値の相互運用上の注意点を説明しています。
更新日