レッスン 5
よくある JSON エラー
末尾カンマ、コメント、シングルクォート、その他の頻出ミス。
無効な JSON は通常、パース時にすぐ失敗します。これらのパターンを認識すると、API 連携や設定ファイルのデバッグが速くなります。
末尾カンマ
{
"a": 1,
"b": 2,
}
JavaScript は 2 の後のカンマを許可しますが、JSON は許可しません。} または ] の前のカンマを削除してください。
シングルクォート
{ 'name': 'Ada' }
JSON の文字列は必ずダブルクォート " を使います。
クォートされていないキー
{ name: "Ada" }
キーは文字列であり、ダブルクォートが必要です: { "name": "Ada" }。
コメント
// not allowed in JSON
{ "x": 1 }
ドキュメントは README や JSON Schema の description に — インラインコメントは使えません。
無効なリテラル
True/False— 小文字のtrue/falseである必要があるundefined— プロパティを省略するかnullを使うNaN,Infinity— 有効な JSON 数値ではない
スマートクォートと不可視文字
Word や Web ページからコピーすると " " が " の代わりに入ることがあります。エディタは BOM やノンブレークスペースを追加することも。パースが謎の位置エラーで失敗したら、クォートを打ち直すか、プレーンテキストエディタ経由で貼り付けてください。
JavaScript 由来の「ほぼ JSON」
開発者がオブジェクトをログ出力したり、ブラウザコンソールからコピーしたりすると、JSON に見えても関数、undefined、クォートなしキーを含むことがあります。JSON として扱う前に、必ず厳格なパーサーで通してください。
修正ワークフロー
- パーサーエラーの行と列を読む。
- 閉じ括弧の上の行で余分なカンマがないか確認する。
- すべての文字列とキーが
"を使っているか確認する。 - コメントと JavaScript 専用の構文を削除する。
これらのルールは意図的に厳格です — 厳格さこそが JSON をシステム間で移植可能にします。