データ・開発

JSONのエラー箇所を見つけて直し、整形する方法

パーサーが読めなくなる代表的なJSONの書き間違い(引用符・カンマ・コメント・True/False)の見つけ方と直し方、整形・圧縮・ツリー表示の使い方を説明します。

公開日:

例:読み込めない設定ファイル

一見よさそうですが、どのJSONパーサーでもエラーになります。

{
  'name': "東京タワー",
  "height_m": 333,
  "open": True,
  "tags": ["展望台", "観光",],
  // 1958年開業
}

エラーを1つずつ見つける

  1. JSON整形を開き、「入力(JSON)」に貼り付ける。
  2. 「構文チェックのみ」(または「整形する」)を押す。最初のエラーで止まり、行・列と「エラー箇所」を表示します。
  3. その1か所を直して、もう一度チェックする。「正しいJSONです。」と表示されるまで繰り返します。

この例では、次の順番でエラーが表示されます。

行 内容(要約) 直し方
2 文字列とキーはダブルクォートで囲む 'name' → "name"
4 True はJSONの値として使えない(小文字にする) True → true
5 閉じかっこの前に余分なカンマ "観光" の後ろの , を削除
6 JSONにはコメントを書けない コメント行を削除
5 余分なカンマ(コメントを消すと "tags" が最後の項目になる) ] の後ろの , を削除

修正後のJSON:

{
  "name": "東京タワー",
  "height_m": 333,
  "open": true,
  "tags": ["展望台", "観光"]
}

よくある原因

  • シングルクォート:JSONの文字列とキーは "ダブルクォート" だけです。
  • 末尾のカンマ:JavaScriptでは書けても、JSONでは使えません。
  • コメント:// や /* */ はJSONの文法にありません。メモが必要なら "note" のような項目にします。
  • PythonやJavaScriptの値:True、False、None、undefined、NaN はJSONではありません。true、false、null を使います。
  • 文字列内の改行・タブ:文字列の中の改行やタブは \n、\t と書きます。
  • 途中で切れている:「JSONが途中で終わっています」は、} や ] が足りないことがほとんどです。APIの応答を一部だけコピーしたときによく起こります。

整形・圧縮・ツリー表示

  • 整形する:改行とインデント(「インデント」で2・4スペースまたはタブ)を入れて構造を読みやすくします。
  • 圧縮(1行):不要な空白をすべて取り除いた最小の1行にします。URLのパラメーターや環境変数に入れるときに便利です。
  • ツリー表示:オブジェクトと配列を折りたためる形で表示します。「すべて開く」「すべて閉じる」で、深い入れ子のAPI応答も確認しやすくなります。

正しいけれど注意が必要なもの

  • 大きな数値:{"id": 12345678901234567890} は正しいJSONですが、JavaScriptの JSON.parse では 12345678901234567000 に変わってしまいます。このツールは数値を書かれたとおりに保つので、IDが知らないうちに変わることはありません。自分のプログラムで正確な大きいIDが必要なら、文字列として扱うのが安全です。
  • 重複したキー:{"a": 1, "a": 2} は多くのパーサーで受け付けられ、最後の値だけが残ります。このツールは警告を出し、重複の場所を一覧にします。

関連する作業

  • オブジェクトの配列を表計算ソフトで開くならJSON・CSV変換。
  • 2つのJSONの違いを見るならテキスト比較。先に両方を整形しておくと差分が揃います。

← 使い方ガイド一覧へ