JSON整形・検証について
JSONはAPI、設定ファイル、ログで日常的に使われる形式ですが、カンマが1つ抜けていたり引用符が1つ余分だったりするだけで、プログラムは文書全体を読めなくなります。このツールはJSONを厳密な標準(RFC 8259)に沿ってチェックし、最初の問題がどこにあるかを正確に示し、有効なJSONをきれいにインデントしたテキストに整形します。最小の形に圧縮することもできます。
多くのオンライン整形ツールはテキストをJSON.parseとJSON.stringifyに通すため、大きな整数が黙って丸められ、1.10が1.1に縮められ、エスケープシーケンスが書き換えられ、重複した2つのキーのうち最後の1つだけが残ります。このツールは独自のパーサーを使うため、数値も文字列も入力されたとおりに書き戻され、重複したキーは削除せずに報告します。
処理はすべてブラウザ内で行われます。貼り付けたテキストや開いたファイルはお使いのデバイス上で処理され、どこにもアップロードされません。
使い方
- 「JSON入力」欄にJSONを貼り付けます。「サンプルを読み込む」で試すことも、「ファイルを開く」で20 MBまでの.jsonまたは.txtファイルを読み込むこともできます。
- 状態メッセージを確認します。「有効なJSON」なら内容の概要が、「無効なJSON」なら行、列、問題箇所を示すコードの抜粋が表示されます。「エラー箇所へ移動」をクリックすると、入力内のその位置が選択されます。
- 「インデント」(スペース2個、スペース4個、タブ)を選び、オブジェクトのキーをアルファベット順にしたい場合は「キーをA–Z順に並べ替え」にチェックを入れます。
- インデントした出力には「整形」、省略できる空白をすべて取り除くには「圧縮」をクリックします。入力が1 MB未満なら、編集やオプションの変更に合わせて結果が自動で更新されます。
- 「結果をコピー」または「.jsonをダウンロード」で出力を持ち出せます。
- 1 MBを超える入力では、「検証」「整形」「圧縮」のいずれかをクリックしてください。ページの反応を保つため、こうした入力は入力中にはチェックしません。
主な機能
- 対処しやすいエラーメッセージ: 最初の構文エラーを、行、列、文字位置と、キャレット(^)付きのコード抜粋で示します。末尾のカンマ、単一引用符、コメント、引用符のないキー、NaN、先頭の0、文字列内のエスケープされていない改行など、よくある間違いにはそれぞれ具体的な説明が表示されます。
- 値を変えない整形: 数値はすべての桁を保ち(12345678901234567890は正確なまま、1.10も末尾の0を保持)、文字列はエスケープシーケンスを保つので、整形によって文書の意味が変わることはありません。
- 重複キーの検出: 同じオブジェクト内に2回出てくるキーを、その位置とともに一覧表示します。両方の項目が出力に残るため、気づかないうちに何かが消えることはありません。
- 整形・圧縮・並べ替え: スペース2個、スペース4個、タブでインデントするか、圧縮できます。並べ替えはすべての階層でオブジェクトのキーを並べ替え、配列の順序はそのまま保ちます。
- 文書の統計: バイト単位のサイズ、ネストの深さ、キーと値の数、そしてオブジェクト、配列、文字列、数値、真偽値、nullがそれぞれいくつ含まれているかを確認できます。
使用例
APIのペイロードで末尾のカンマを見つける
{"name": "Ada", "tags": ["math", "poetry",]} を貼り付けると、1行42列目に「JSONでは末尾のカンマは使えません」と表示され、余分なカンマの下にキャレットが付きます。カンマを削除すると、状態が「有効なJSON」に変わります。
大きなIDをそのまま保つ
JavaScriptのJSON.parseは {"id": 9007199254740993} を9007199254740992に変えてしまいます。ここで整形すると9007199254740993のまま保たれ、この数値は多くのパーサーが正確に表せる範囲を超えているという注意が表示されます。
2つの設定ファイルを比較する
両方のファイルを「キーをA–Z順に並べ替え」と同じインデントで整形してから、差分ツールで比較します。キーの順序や空白の違いが消えるので、本当の変更だけが残ります。
リクエストボディを小さくする
見やすく整形されたJSONで「圧縮」をクリックすると、インデントと改行が取り除かれます。「増減」の欄に、入力と比べて何バイト減ったかが表示されます。
制限事項と注意点
- 受け付けるのは厳密なJSONだけです。コメント、末尾のカンマ、単一引用符の文字列、NaN、Infinity、その他のJSON5やJSONCの拡張はエラーとして報告され、自動では修正されません。
- 報告される構文エラーは最初の1つだけです。それを直すと、次のエラーがあれば表示されます。
- オブジェクトと配列のネストは10,000階層まで、結果は2億文字までです。
- ファイルはUTF-8でエンコードされた20 MB以下のものに限ります。1 MBを超える入力はボタンを押したときにチェックされ、非常に大きな結果は欄内にプレビューとして表示されます。「結果をコピー」と「.jsonをダウンロード」では常に出力全体が使われます。
- 「キーをA–Z順に並べ替え」はキーをUTF-16のコード単位で比較します。これはJavaScriptの既定の並べ替えと同じ順序で、大文字が小文字より先に来て、言語ごとの並び順は考慮されません。
- 列番号はUTF-16のコード単位で数えるため、多くのコードエディタと同じく、絵文字など基本多言語面の外にある文字は2列として数えられます。
よくある質問
実際の間違いより後の行でエラーが報告されるのはなぜですか?
パーサーは、テキストがもう有効なJSONではあり得なくなった最初の位置を報告します。たとえばカンマの抜けは次の値が始まったところで初めて検出され、閉じ括弧の抜けは入力の終わりで検出されます。メッセージには何が必要だったかが書かれているので、たいていは本当の原因がわかります。
整形すると数値や文字列が変わりますか?
いいえ。このツールは入力された数値と文字列のテキストをそのまま保つので、大きな整数、末尾の0、1E+2のような指数、\u00e9のようなエスケープシーケンスも入力したとおりに出力されます。変わるのは空白だけです(「キーをA–Z順に並べ替え」を選んだ場合はキーの順序も変わります)。
JSONでキーの重複は許されていますか?
JSONの標準では、オブジェクト内の名前は一意であるべきとされていますが、重複は禁止されておらず、パーサーによって扱いが異なります。ほとんどのパーサーは最後の値だけを残します。このツールは重複を受け付け、正確な位置とともに警告し、整形した結果にはすべての項目を残します。
コメント付きのJSON(JSONC)やJSON5を読み込めますか?
いいえ。これらの形式は一部のエディタやツールが使う拡張で、有効なJSONではありません。このツールはコメント、末尾のカンマ、単一引用符の位置を示すので、それを削除してください。
JSONはサーバーにアップロードされますか?
いいえ。解析と整形はこのページのJavaScriptで行われ、ファイルはお使いのデバイスから直接読み込まれます。貼り付けたものや開いたものがネットワークに送信されることはありません。