Expecting property name enclosed in double quotes: line L column C (char N)
O parser está dentro de um objeto e esperava uma chave entre aspas duplas. Encontrou outra coisa: uma aspa simples, uma palavra solta, ou em versões antigas do Python uma vírgula sobrando. O JSON exige que as chaves sejam strings entre aspas duplas, sem exceção para chaves que pareçam identificadores.
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 Um dict do Python impresso em vez de serializado
str(d) e print(d) produzem aspas simples. Esta é de longe a fonte mais comum deste erro.
Quebra
data = str({'a': 1}) json.loads(data)Funciona
data = json.dumps({'a': 1}) json.loads(data) -
02 O tratamento de aspas da AWS ou Azure CLI no Windows
PowerShell e cmd lidam com aspas de forma diferente de um shell POSIX, então argumentos JSON inline chegam à CLI sem as aspas duplas. A correção confiável é colocar o JSON em um arquivo e passar file://params.json em vez de brigar com o shell.
Quebra
aws dynamodb query --key-condition-expression "{\"id\": ...}"Funciona
aws dynamodb query --cli-input-json file://params.json -
03 Uma vírgula sobrando, no Python 3.12 e anteriores
Antes do 3.13, uma vírgula sobrando produzia esta mensagem. A partir do 3.13 ela tem a própria: "Illegal trailing comma before end of object". Se você está seguindo um guia que não menciona versões, é por isso que ele pode não bater com o que você vê.
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 property name or '}' in JSON at position 1 (line 1 column 2) |
|---|
Perguntas frequentes
- Dá para parsear o repr de um dict do Python sem reescrever?
- ast.literal_eval dá conta com segurança: ele avalia sintaxe literal do Python sem executar código arbitrário, ao contrário do eval. Depois passe o resultado pelo json.dumps se você precisa de JSON de verdade.
Conserte agora
Cole o payload na ferramenta acima, ou vá direto para a que foi feita para este trabalho.
Converter aspas simples em JSON