データ・開発
JSONのエラー箇所を見つけて直し、整形する方法
パーサーが読めなくなる代表的なJSONの書き間違い(引用符・カンマ・コメント・True/False)の見つけ方と直し方、整形・圧縮・ツリー表示の使い方を説明します。
公開日:
例:読み込めない設定ファイル
一見よさそうですが、どのJSONパーサーでもエラーになります。
{
'name': "東京タワー",
"height_m": 333,
"open": True,
"tags": ["展望台", "観光",],
// 1958年開業
}
エラーを1つずつ見つける
- JSON整形を開き、「入力(JSON)」に貼り付ける。
- 「構文チェックのみ」(または「整形する」)を押す。最初のエラーで止まり、行・列と「エラー箇所」を表示します。
- その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の違いを見るならテキスト比較。先に両方を整形しておくと差分が揃います。