Todos os artigos

JSON Repair: por que o JSON quebra e como consertá-lo

JSON "quebrado" é um problema comum: o arquivo parece quase correto, mas um parser se recusa a lê-lo. Muitas vezes a causa é um preço colado direto de uma planilha, sem pensar no formato numérico que o JSON exige.

Causas comuns de JSON inválido

  • Vírgula sobrando antes de um colchete de fechamento — {"a": 1,} —, que o JavaScript tolera mas um parser JSON rigoroso não.
  • Aspas simples em vez de duplas — comum ao copiar de um objeto literal JavaScript.
  • Chaves sem aspas{name: "Ana"} em vez de {"name": "Ana"}.
  • Comentários — a especificação JSON não prevê comentários de forma alguma, diferente de JSON5 ou JSONC.
  • Saída truncada — se uma resposta de API ou arquivo de log é cortado no meio, o documento fica sem fechamento.

A vírgula decimal: uma armadilha que vem do Excel

No Brasil e em Portugal, a vírgula separa a casa decimal e o ponto agrupa milhares: "R$ 1.234,50" é um preço perfeitamente normal numa planilha. Colado sem conversão num campo JSON, {"preco": 1.234,50} não é um número decimal válido para o parser — ele lê 1.234, encontra uma vírgula fora de lugar e sobra um token solto 50. Uma ferramenta de reparo pode até tentar adivinhar qual era o valor pretendido, mas não tem garantia nenhuma de acertar se era 1234,50 ou apenas 1.234 truncado.

Como funciona o reparo automático

Uma ferramenta de reparo de JSON aplica heurísticas: adiciona aspas ausentes, remove vírgulas sobrando, fecha colchetes não fechados com base no contexto. Isso funciona bem para erros típicos e comuns, mas não é mágica — a ferramenta não consegue adivinhar qual valor era pretendido se os dados estiverem mais seriamente corrompidos.

Os limites do possível

O reparo automático corrige sintaxe, não semântica. Se um campo inteiro estiver faltando, ou um valor estiver errado logicamente, a ferramenta não vai detectar isso — o resultado ainda precisa de verificação manual, especialmente quando os números vieram de uma planilha em formato brasileiro ou português.

Quando o reparo é ambíguo

Alguns danos têm várias correções igualmente plausíveis. Uma string cortada como {"a": 1, "b": 2 pode simplesmente ser fechada com um colchete — perdendo dados, se na verdade havia mais um campo pretendido. Nesses casos, a heurística de reparo faz a suposição "menos destrutiva", mas isso é um palpite, não uma garantia de restaurar a intenção original.

Experimentar a ferramenta