JSON Parse Error / Unexpected token の原因と解決方法
SyntaxError: Unexpected token の読み方、よくある原因5つと具体的な修正方法を解説。末尾カンマ、シングルクォート、コメントなど、JSONパースエラーを素早く解決するための実践ガイド。

JSONを扱っていると、一度は遭遇するのが SyntaxError: Unexpected token というエラーメッセージです。API のレスポンスを処理しようとしたとき、設定ファイルを読み込もうとしたとき、突然このエラーが出て作業が止まってしまいます。
原因さえわかれば修正は簡単ですが、エラーメッセージだけでは何が悪いのか判断しづらいことも多いです。この記事では、JSON Parse Error の読み方と、よくある原因5つを具体例つきで解説します。
手っ取り早くエラー箇所を特定したい場合は、JSON Formatter にペーストすれば、エラーの行番号とともに原因が表示されます。
SyntaxError: Unexpected token の読み方
ブラウザやNode.jsでJSONをパースすると、構文エラーがある場合に次のようなメッセージが返ります。
SyntaxError: Unexpected token ' in JSON at position 42
このメッセージは3つの情報を含んでいます。
Unexpected token '— パーサーが想定していない文字'(シングルクォート)に遭遇したat position 42— JSON文字列の先頭から42文字目でエラーが発生したSyntaxError— 構文自体が壊れている(値の問題ではなく、書き方の問題)
position の数値はバイト位置ではなく文字位置を指します。ただし、改行コードや空白もカウントされるため、手作業で数えるのは現実的ではありません。JSON Formatter のようなツールを使えば、該当箇所をすぐに特定できます。
よくある原因5つ
1. 末尾カンマ(trailing comma)
JavaScriptでは配列やオブジェクトの最後にカンマを付けても動作します。しかしJSONの仕様では、末尾カンマは許可されていません。
{
"name": "Alice",
"age": 30,
}
最後の 30, のカンマを削除する必要があります。
{
"name": "Alice",
"age": 30
}
エディタのフォーマッタが自動で末尾カンマを付ける設定になっている場合、JSON ファイルでは無効にしておくとよいでしょう。
2. シングルクォート
Pythonの辞書やJavaScriptのオブジェクトでは ' を使えますが、JSONではダブルクォート " のみが有効です。
{'name': 'Alice'}
これは正しいJSONではありません。すべてダブルクォートに置き換えます。
{"name": "Alice"}
Pythonで辞書をJSON文字列にする場合は、str() ではなく json.dumps() を使ってください。str() はシングルクォートで出力してしまいます。
3. クォートなしのキー
JavaScriptではオブジェクトのキーにクォートが不要な場合があります。JSONでは、キーは必ずダブルクォートで囲む必要があります。
{name: "Alice"}
正しくはこう書きます。
{"name": "Alice"}
4. コメント
設定ファイルでよくある間違いです。JSONの仕様にはコメント構文が存在しません。
{
// ユーザー名
"name": "Alice"
}
// や /* */ はすべて取り除く必要があります。なお、tsconfig.json など一部のファイルはJSONC(JSON with Comments)という拡張仕様で書かれており、コメントが許可されています。ただし標準のJSONパーサーでは読めません。
コメントを残したい場合は、JSONではなくYAMLで管理するという選択肢もあります。
5. BOM(Byte Order Mark)
UTF-8で保存したファイルの先頭にBOM(\uFEFF)が入っていると、パーサーがそれを不正な文字として検出します。
SyntaxError: Unexpected token in JSON at position 0
at position 0 かつ見えない文字がトークンとして報告されている場合、BOMの可能性が高いです。テキストエディタでBOMなしUTF-8として保存し直すか、プログラム側で先頭のBOMを除去する処理を入れてください。
const cleaned = text.replace(/^\uFEFF/, '');
const data = JSON.parse(cleaned);
FormatArc でエラー箇所を確認する
5つの原因を把握していても、数百行あるJSONファイルから問題箇所を目視で探すのは大変です。JSON Formatter を使えば、ペーストするだけでエラーの行番号と内容が日本語で表示されます。
使い方は3ステップです。
- JSON Formatter を開く
- 左側のエディタにJSONを貼り付ける
- 「変換」ボタンを押す
正しいJSONであれば整形された結果が右側に表示されます。構文エラーがあれば、エラーメッセージに行番号が含まれるので、該当行を修正して再度変換すればよいでしょう。
ブラウザ内で処理が完結するため、APIキーや個人情報を含むJSONでも安心して使えます。データがサーバーに送信されることはありません。
まとめ
JSON Parse Error の大半は、この記事で紹介した5つのパターンのいずれかに該当します。エラーメッセージの Unexpected token と position を手がかりに原因を絞り込めますが、ファイルが大きい場合はツールに頼るのが効率的です。
JSONの書き方に不安がある場合は、JSONの書き方ガイドも参考にしてください。また、整形の基本テクニックについてはJSON整形の基本でまとめています。