JSON整形・構文チェック・圧縮ツール

JSONを貼り付けると、すぐにRFC 8259に沿って構文をチェックし、エラーがあれば行・列と原因を表示します。正しいJSONはインデント付きで読みやすく整形するか、1行に圧縮してコピーできます。データはどこにも送信されません。

JSONを貼り付けるか入力してください。変更のたびにチェックされます。

入力したテキストはブラウザー内にとどまります。送信・保存されず、アドレスバーにも表示されません。

すべてのオブジェクト(入れ子を含む)のキーを並べ替えます。配列の要素の順序はそのままです。
入力内容はこのブラウザーにのみ保存されます。

結果

判定結果
✓ 有効なJSON
統計
値:15 · オブジェクト:4 · 配列:1 · キー:12 · 深さ:4 · 文字数:149 → 244
出力
{ "会社名": "株式会社サンプル", "設立": 2019, "稼働中": true, "売上高": 125000000, "拠点": [ { "都市": "東京", "従業員数": 42 }, { "都市": "大阪", "従業員数": 17 } ], "連絡先": { "メール": "info@example.com", "電話": null } }

計算方法

何をチェックするのか

判定の基準は、JSONのインターネット標準であるRFC 8259(ECMA-404と同等)です。独自のパーサーで1文字ずつ読み進め、最初の規則違反で止まります。メッセージには行と列が表示され、該当箇所を^で示して何が間違っているかを説明します。ブラウザ内蔵のJSON.parseはブラウザごとにメッセージが異なり、「Unexpected token」のように情報が少ないことが多いため、どのブラウザでも同じ結果になるようにしています。

よくあるJSONのエラー

整形・圧縮・並べ替え

出力はチェック済みの内容から作り直されます。整形は階層ごとにスペース2つ・4つまたはタブでインデントし、圧縮は不要な空白をすべて削除して1行にします(ファイルサイズが最小)。数値と文字列は書かれたとおりに残ります。JSON.parse+JSON.stringifyと違い、1.0が1になったり、12345678901234567890が丸められたりしません。並べ替えはJSON Canonicalization Scheme(RFC 8785)と同じくUnicodeのコード単位順です。大文字は小文字より前、ひらがな・カタカナ・漢字はそれより後ろに並びます。

エラーではなく警告になるもの

同じオブジェクト内のキーの重複はRFC 8259で禁止されてはいませんが、信頼できません。多くのプログラムは最後の値だけを残します。先頭のBOM(バイト順マーク)はパーサーが無視してよいとされており、このツールも無視したうえでお知らせします。

制限

チェックするのは構文で、意味ではありません。必須項目の有無や型が正しいかは、JSON Schemaで確認します。列はUnicode文字を1から数えます(タブ=1文字、日本語の1文字も1列)。タブ幅4のエディタでは列番号が大きく表示されることがあります。入力は500万文字、入れ子は1,000階層までです。

よくある質問

JSONはどこかにアップロード・保存されますか?

いいえ。チェックも整形もすべてブラウザ内で行われます。テキストはURLに含まれず、保存もされません。リンクに入るのは設定(出力形式・インデント・並べ替え)だけです。

JSONを1行にするには?

出力形式で「圧縮(1行・空白なし)」を選びます。改行やインデントなど不要な空白がすべて削除され、1行のJSONになります。逆に1行のJSONを見やすくするには「整形」を選びます。

JSONのフォーマットが正しいかチェックするには?

JSONをここに貼り付けるだけです。正しければ「✓ 有効なJSON」と表示され、間違っていれば最初のエラーの行・列と原因が表示されます。「エラー箇所へ移動」でカーソルがその位置に移ります。

コメントや末尾のカンマはなぜ使えないのですか?

JSONは、どのプログラミング言語でも同じように読めるよう、意図的にシンプルに作られています。コメントや末尾のカンマはJSON5やJSONC(VS Codeの設定ファイルなど)といった拡張の機能で、通常のJSONとしては無効です。

有効なJSONなのにプログラムが受け付けないのはなぜですか?

多くの場合、内容がプログラムの期待と合っていません。必須項目がない、文字列のはずが数値になっている、構造が違う、などです。これはJSON SchemaやAPIの仕様書で決まります。キー重複の警告も確認してください。

「途中で終わっている」というエラーはどう探せばいいですか?

ほとんどの場合、閉じの } や ]、またはダブルクォートが足りません。メッセージには閉じられていない括弧の行が表示されるので、まずそのブロックの終わりを確認してください。

出典・根拠

更新日:

関連ツール