V8 Node v24.15.0, V8 13.6.233.17 上でパーサーを実行して確認しました。
Expected ',' or '}' after property value in JSON at position N (line L column C)
パーサーはオブジェクトの中で値を読み終え、メンバーの並びがカンマで続くか、波括弧で終わるかのどちらかを期待していました。しかし別のものが来ました。このメッセージはオブジェクトの内部に関するV8の総合的な受け皿であり、いくつもの異なる間違いを一括りにしています。
JSONを貼り付けて、壊れている箇所を正確に確認する
入力
貼り付けたものがブラウザの外に出ることはありません。 connect-src の許可リストにより、これは約束ではなくブラウザによる保証になっています。 自分で確かめる
実際の原因
どれが答えになることが多いか、その順に並べています。
-
01 プロパティ間のカンマの書き忘れ
もっともよくある原因で、たいていは手で編集した結果です。
壊れる例
{ "a": 1 "b": 2 }動く例
{ "a": 1, "b": 2 } -
02 ファイルが途中で切れている
報告された位置が入力の末尾そのものなら、値のあとには何も続いていなかったということです。それは構文の間違いではなく、切れたドキュメントです。当サイトのバリデーターは両者を区別し、開いたままの括弧を一覧表示します。
壊れる例
{ "a": 1動く例
{ "a": 1 } -
03 値のあとのコメント
JSONにコメントはないため、値のあとの「// メモ」はこのエラーになります。
-
04 16進数など、JSONにない書き方の数値
パーサーは0をひとつの完結した数値として読み、そのあとにxを見つけます。それはカンマでも波括弧でもありません。JSONに16進リテラルはありません。
壊れる例
{ "mask": 0x1F }動く例
{ "mask": 31 }
ほかのランタイムでの同じ間違い
根本にある問題は同一で、違うのは文言だけです。同僚がこれらのどれかを報告してきたなら、見ているものはあなたと同じです。
| Python | Expecting ',' delimiter: line 1 column 10 (char 9) |
|---|---|
| V8, inside an array | Expected ',' or ']' after array element in JSON at position N |
よくある質問
- カンマの書き忘れと、ファイルの切れを見分けるには?
- 報告された位置と、入力の長さを比べてください。同じなら、ドキュメントが早く終わっています。当サイトのバリデーターはどちらであるかを示し、切れたドキュメントについては、閉じていない括弧すべてと、それが開かれた行を挙げます。