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 ...

Invalido
{
  name: "Alice",
  "age": 30
}
Corregido
{
  "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.

Invalido
{
  "items": [1, 2, 3,],
  "tags": ["a", "b",]
}
Corregido
{
  "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.

Falta coma
{
  "a": 1
  "b": 2
}
Coma extra
{
  "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.

Invalido
{ "path": "C:\Users\data" }
Corregido
{ "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.