無効な JSON の直し方

「Unexpected token」のようなメッセージだけでは、何が間違っているのかほとんど分かりません。このガイドでは、押さえておきたい JSON のルール、エラーの正確な位置の見つけ方、無効な JSON の原因となる間違いの直し方を説明します。

ツールを開く: JSON整形ツール

つまずきやすいルール

  • 文字列とキーにはダブルクォートだけを使います。"name" は正しく、'name' は使えません。
  • キーはすべて引用符で囲んだ文字列です。{name: 1} は JavaScript では有効でも JSON ではありません。
  • オブジェクトや配列の最後の項目の後にカンマは付けません。
  • コメントは一切使えません。
  • リテラル値は true、false、null だけで、常に小文字です。
  • 数値に先頭のゼロ、プラス記号、16 進数表記は使えません。NaN と Infinity も使えません。

エラーの正確な位置を見つける

パーサーが示すのは処理をあきらめた位置で、たいていは本当の間違いの直後です。エラーが閉じかっこを指している場合は、その上の行を確認してください。末尾のカンマや引用符の抜けがよくある原因です。

このツールは行と列を表示し、問題の箇所に印を付けてその行を示します。「入力欄で表示」ボタンを押すと該当する文字が選択されるので、スマホでも見つけやすくなります。

コピーが原因のエラー

ワープロ、チャットアプリ、メールからコピーした JSON には、半角の " ではなく全角や装飾付きの引用符(“ ”)や、目に見えない特殊な空白が含まれていることがあります。正しく見えても無効です。「JSON を修復」でこれらを置き換えられます。

Python の出力からコピーしたデータには True、False、None やシングルクォートが含まれます。JavaScript のコードからコピーしたデータには、引用符のないキーやコメントが含まれることがあります。「JSON を修復」はこれらをすべて標準の JSON に変換します。

JSON が途中で切れている場合

ログやターミナルの出力が途中で切れていると、「JSON が途中で終わっています」というエラーになります。欠けた部分を安全に推測できるツールはありません。レスポンス全体をもう一度コピーするか、ファイルに保存してそのファイルを開いてください。

修正を確認する

修正するとステータス表示が緑色になり、キーの数と入れ子の深さが表示されます。コードや設定で使う前に、ツリー表示に切り替えて構造が想定どおりか確認しましょう。