SyntaxError: Unexpected token in JSON
JSONのパース時に構文エラーが発生した際のエラー
概要
JSON.parse()でJSON文字列を解析する際、JSONの構文が正しくない場合に発生するエラーです。APIレスポンスやファイル読み込み時によく発生します。
エラーメッセージ
SyntaxError: Unexpected token '<' in JSON at position 0
SyntaxError: Unexpected token 'u' in JSON at position 0
SyntaxError: Unexpected end of JSON input
原因
- HTMLレスポンス: APIがエラーページ(HTML)を返している
- undefined/nullのパース: JSON以外の値をパースしようとした
- 末尾カンマ: 配列やオブジェクトの末尾に余分なカンマ
- シングルクォート: JSONではダブルクォートのみ有効
- コメント: JSONはコメントをサポートしていない
- BOM: UTF-8 BOMが含まれている
解決策
1. レスポンスの内容を確認
| |
2. fetchでのエラーハンドリング
| |
3. try-catchで安全にパース
| |
4. JSON構文を修正
| |
5. APIレスポンスがHTMLの場合
| |
6. 空レスポンスの処理
| |
7. Node.jsでファイル読み込み
| |
8. デバッグ用バリデーション
| |
よくある間違い
- APIエラー時のレスポンスをそのままパースしようとする
localStorageから取得した値がundefinedの場合- ダブルエンコードされたJSON(
"{\\"name\\":\\"John\\"}")
関連エラー
参考リンク
JavaScript の他のエラー
この記事は役に立ちましたか?