Errores de parseo JSON: 10 fallos comunes y como corregirlos
2024-09-12
Las respuestas de API y archivos de configuracion suelen fallar por un unico error de parseo. Esta guia cubre diez errores comunes con ejemplo roto, causa y JSON corregido, ademas de como ubicar la linea en nuestro formateador online.
1. Comillas simples en claves o cadenas
JSON exige comillas dobles en claves y valores de tipo string. Los literales de objeto de JavaScript aceptan comillas simples; JSON no.
Error tipico: Unexpected token ' in JSON at position ...
{
name: "Alice",
"age": 30
}{
"name": "Alice",
"age": 30
}2. Comas finales
No puede haber coma despues de la ultima propiedad o del ultimo elemento del arreglo. Algunos editores agregan comas finales que rompen los parsers JSON estrictos.
Los literales de JavaScript ES2019+ permiten comas finales; la especificacion JSON (RFC 8259) nunca las permite.
{
"items": [1, 2, 3,],
"tags": ["a", "b",]
}{
"items": [1, 2, 3],
"tags": ["a", "b"]
}3. Claves sin comillas
Cada clave debe ser una cadena con comillas dobles. { active: true } es JSON invalido.
{
active: true,
"score": 95
}4. Comas faltantes o de mas
Los pares adyacentes necesitan comas; las comas duplicadas provocan errores de Unexpected token.
{
"a": 1
"b": 2
}{
"a": 1,, "b": 2
}5. Secuencias de escape incorrectas
Las barras invertidas en rutas deben duplicarse: \\ por cada \. Una barra suelta causa Bad escaped character.
{ "path": "C:\Users\data" }{ "path": "C:\\Users\\data" }6. NaN, Infinity, undefined
JSON solo tiene null para representar vacio; no admite valores propios de JavaScript como NaN o undefined.
{ "value": NaN }7. Comentarios
JSON no admite comentarios // ni /* */. Debes quitarlos antes de parsear.
Documentacion, JSONC de VS Code y JSON5 permiten comentarios; no son entrada valida para JSON.parse. Para intercambio de datos, usa JSON estricto.
{
// user profile
"name": "Bob"
}8. Multiples valores en raiz o corchetes sin cerrar
Un JSON valido tiene un unico objeto o un unico arreglo en la raiz. Falta de } o ] produce Unexpected end of JSON input.
9. Numeros invalidos
No se permiten ceros a la izquierda (007), ni hexadecimal (0xFF), ni punto decimal suelto.
10. Caracteres de control sin escapar
Los saltos de linea y tabulaciones dentro de strings deben ser \n y \t, no saltos literales copiados de logs.
Pruebalo online
Pega el texto en la herramienta JSON. Si falla, la barra lateral muestra el mensaje y el numero de linea; el editor resalta esa linea.
Tras corregir, vuelve a formatear o minificar; un mensaje de exito indica que el JSON es valido.