🧩 JSON整形・検証ツール
JSONを読みやすく整形します。構文エラーがあれば「何行目の何列目で、何が問題か」を具体的に指摘し、該当箇所を抜き出して表示。1行への圧縮、エスケープされた文字列の復元、キーのソートにも対応。データはすべてブラウザ内で処理され送信されません。
🔒 すべてブラウザ内処理。貼り付けたJSONはサーバーに送信されません。
📑 このページの内容
🔧 JSONでよくあるエラーと直し方
エラーの9割は次のパターンです。上のツールが行番号を示すので、該当行の前後を確認してください。
{
"name": "山田", ← ①キーはダブルクォート必須('name' はNG)
'city': "東京", ← ②シングルクォートは使えない
"age": 030, ← ③数値の先頭に0は置けない
// コメント ← ④JSONにコメント構文はない
"tags": ["a", "b",], ← ⑤末尾のカンマ(最頻出)
}
| エラーメッセージ例 | よくある原因 |
|---|---|
| Unexpected token } in JSON | 末尾のカンマ。最後の要素の後ろのカンマを削除 |
| Unexpected token ' in JSON | シングルクォートを使っている。すべて"に置換 |
| Unexpected end of JSON input | 括弧が閉じていない。{と}、[と]の数を確認 |
| Unexpected token N / u | NaNやundefinedが含まれている。JSONでは使えない |
| Unexpected non-whitespace character | JSONが2つ連なっている。JSONL形式の可能性 |
| Bad control character | 文字列内に生の改行やタブがある。\n\tにエスケープする |
📏 JSONの構文ルール(早見表)
- キーは必ずダブルクォートで囲む。
{"key": 1}は可、{key: 1}は不可。 - 文字列もダブルクォートのみ。シングルクォートは使えません。
- 使える値は6種類だけ。文字列・数値・
true・false・null・オブジェクト/配列。日付型はなく、文字列(ISO 8601形式が慣例)で表します。 - 末尾のカンマは禁止。JavaScriptの配列では許されますが、JSONでは構文エラーです。
- コメントは書けません。説明を入れたい場合は
"_comment"のようなキーを用意するのが慣例です。 - 数値に制限があります。先頭の
0(030)、+5、.5、Infinity、NaNはすべて不可です。
🔀 JSON5・JSONLとの違い
| 形式 | 特徴 | 主な用途 |
|---|---|---|
| JSON | 標準仕様。厳格 | API・データ交換全般 |
| JSON5 | コメント・末尾カンマ・シングルクォートを許容 | 人が編集する設定ファイル |
| JSONL (JSON Lines) | 1行に1つのJSONを並べる | ログ・大量データのストリーム処理 |
| NDJSON | JSONLとほぼ同じ | 同上 |
標準のJSONパーサーはJSON5やJSONLをそのまま読めません。「Unexpected non-whitespace character after JSON」というエラーが出る場合、データがJSONL形式(複数のJSONが行ごとに並んでいる)である可能性が高いので、1行ずつ分けて処理してください。
❓ よくある質問
- Q. 貼り付けたJSONは外部に送信されますか?
- されません。すべてブラウザ内のJavaScriptで処理されます。APIレスポンスや設定ファイルなど、社外に出せないデータでも安全です。
- Q. エスケープされた文字列を元に戻したい
- ログでよく見る
{\"key\":\"value\"}のような形式は、「↩️ エスケープ解除」ボタンで通常のJSONに復元できます。復元後にもう一度「整形する」を押してください。 - Q. 大きなJSONも扱えますか?
- 数MB程度までは問題なく動作します。それ以上の巨大なファイルではブラウザが重くなるため、コマンドラインの
jqなどをおすすめします。 - Q. キーの並び順は保持されますか?
- 整形時は元の順序を保ちます。「キーを名前順に並べ替える」にチェックを入れると、アルファベット順に並べ替えられます(差分比較をしたいときに便利です)。
- Q. 2つのJSONの違いを比べたい
- 両方を「キーを名前順に並べ替える」で整形してから、テキスト差分比較ツールに貼り付けると、違いが色付きで表示されます。