Expecting ',' delimiter: line L column C (char N)
O parser esperava que o contêiner atual continuasse com uma vírgula. O confuso é que a posição costuma apontar para um lugar que parece perfeitamente certo, porque o erro de verdade está um pouco antes: quase sempre uma aspa que encerrou a string antes do que você pretendia.
Cole o seu JSON e veja exatamente onde ele quebra
Nada do que você cola sai do seu navegador. A lista de permissões connect-src transforma isso em uma garantia do navegador, e não em uma promessa. Confira você mesmo
O que realmente causa isso
Ordenados por quantas vezes cada um acaba sendo a resposta.
-
01 Uma aspa dupla sem escape dentro de uma string
A aspa interna fecha a string cedo demais, então o texto seguinte é lido como um token novo onde se esperava uma vírgula. A pergunta mais votada do Stack Overflow sobre esse erro se chama literalmente "Valid JSON giving JSONDecodeError", o que resume a experiência inteira em uma linha.
Quebra
{"quote": "he said "yes" loudly"}Funciona
{"quote": "he said \"yes\" loudly"} -
02 Uma vírgula realmente faltando
Entre dois membros de um objeto ou dois elementos de um array.
-
03 Uma barra invertida solta antes da aspa de fechamento
Um caminho do Windows terminado em barra invertida escapa a aspa, então a string continua correndo e a vírgula seguinte nunca chega onde o parser a espera.
-
04 O arquivo está truncado
Se a posição é o fim da entrada, o documento foi cortado em vez de escrito errado.
O mesmo erro em outros runtimes
O problema de fundo é idêntico; só muda a redação. Se um colega reportar uma dessas mensagens, ele está olhando exatamente para a mesma coisa que você.
| JavaScript (V8) | Expected ',' or '}' after property value in JSON at position N |
|---|
Perguntas frequentes
- O JSON me parece certo. Por que falha?
- Olhe o caractere imediatamente antes da posição reportada, não a posição em si. Uma string encerrada cedo demais é invisível até você contar as aspas. Colar o documento em um validador que colore as strings deixa isso óbvio em um segundo.
- Como evito que isso aconteça?
- Nunca monte JSON concatenando strings. Monte um dict e chame json.dumps, que escapa cada valor corretamente por construção.
Conserte agora
Cole o payload na ferramenta acima, ou vá direto para a que foi feita para este trabalho.
Destacar as strings