JSON の末尾カンマを修正
オブジェクトの最後のプロパティや配列の最後の要素の後の末尾カンマは、一部の JavaScript ではよくても、JSON では無効 です。
なぜこのエラーが起きるのか
JavaScript のオブジェクトリテラルは末尾カンマを許すことがありますが、JSON では最後の要素の直後に閉じカッコ/ブレースが続いていなければなりません。
エラーの例
{ "name": "Ada", "active": true, }
修正後の JSON
{ "name": "Ada", "active": true }
末尾カンマはどこから来るのか
多くは、人が設定を手で編集して最後の項目をコメントアウトしたとき、または JavaScript/TypeScript からコピペしたときに混入します。テンプレートエンジンやコードジェネレータも、最後のインデックスを意識せずに無条件で要素ごとにカンマを足すと、これを生みます。
なぜ一部のパーサは許容し JSON は許容しないのか
JavaScript のオブジェクトリテラル、JSON5、JSONC、YAML、そしてほとんどの言語のリテラル構文は、diff を綺麗にするために末尾カンマを許容します。RFC 8259 の JSON は意図的に許容しません —— JSON.parse、Go の encoding/json、Python の json モジュールなど厳格なパーサはすべて拒否します。
本番に入る前に末尾カンマを検知する
CI で厳格な JSON パーサ(jq、python -m json.tool、node -e 'JSON.parse(...)' など)を使って設定ファイルを lint してください。TypeScript リポジトリでは、.json に対する Prettier の "trailingComma" を "none" に設定し、フォーマッタが末尾カンマを挿入しないようにしてください。
末尾カンマが本当のバグでないとき
API や JSON を生 成するライブラリから来た payload に末尾カンマが含まれている場合、問題は上流のシリアライズにあります。ローカルで直すと生成側のバグを隠してしまい、次の呼び出しでまた現れます —— 生成側を直してください。
FAQ
Q:JSON.parse は今後末尾カンマを受け入れますか? A:いいえ、strict モードが標準です。Q:JSON5 は安全な代替ですか? A:人が編集する設定向けには良いですが、通信プロトコルでは使わないでください。Q:自動修復ツールは末尾カンマだけを取り除けますか? A:はい。JSON を貼り付ければ、よくある他の構文エラーと合わせて取り除いてくれます。
JSON 修復ガイド
トピックハブ
- JSON Parse Errors: Read the Message, Jump to the Fix
- Fix Invalid JSON: From 'What's Wrong' to a Clean File
- JSON Formatter, Validator, Viewer: Pick the Right Tool
- Repair LLM JSON Output: Handling Almost-JSON from AI
- Privacy: JSON Tools That Don't Leave Your Browser
- JSON Interop: YAML, CSV, XML, JWT, Schema
個別ガイド
- Base64 文字列のデコード方法(および JWT ペイロード)
- URL エンコーディング:クエリパラメータとパスをパーセントエンコードする
- YAML を JSON に変換(インデントエラーを避ける)
- JSON を CSV に変換:オブジェクト配列をフラット化
- JSON を XML に変換:ルート要素・属性・配列
- JSON を文字列リテラルとしてエスケープ(二重エンコードされた JSON のデコード)
- JSON のシングルクォートを修正
- JSON の引用符なしキーを修正
- LLM が出力した JSON を修復する
- JSON 解析エラー「Expected Property Name」を修正
- JSON と JavaScript オブジェクトリテラルの違い
- API リクエスト前に JSON を検証する
- JSON フォーマッタ vs JSON Repair
- JSON の Unexpected Token エラーを修正
- JSON から JavaScript オブジェクトへの変換ツール