Guías

JSON inválido: 7 errores comunes y cómo corregirlos

Si tu JSON da error al cargarlo, casi siempre es por una de siete cosas: una coma de más, comillas simples, claves sin comillas, comentarios, caracteres sin escapar, valores que JSON no reconoce o comillas tipográficas copiadas de un documento. Aquí ves cómo detectar cada una y corregirla en segundos, sin subir tus datos a ningún servidor.

La herramienta de esta guía

Formateador y validador de JSON

Funciona dentro de tu navegador: nada de lo que pongas sale de esta página.

Abrir Formateador y validador de JSON

Resumen rápido

Síntoma Causa probable Arreglo
Falla justo antes de un } o ] Coma al final del último elemento Borra esa coma
Falla en el primer carácter de una clave Comillas simples o clave sin comillas Usa siempre comillas dobles
Falla en una línea que empieza con // Comentarios Bórralos
Falla a mitad de un texto Comilla, barra invertida o salto de línea sin escapar Escríbelos como \", \\ o \n
Falla en un valor undefined, NaN, True, None, 007 Cámbialo por null, true o un texto entre comillas
Todo se ve bien y aun así falla Comillas “bonitas” o caracteres invisibles Reescribe las comillas a mano
Falla en la posición 0 con < No es JSON, es una página HTML Revisa de dónde viene la respuesta

La forma más rápida de encontrar el error

  1. Copia tu JSON completo, desde la primera llave hasta la última.
  2. Pégalo en el Formateador y validador de JSON.
  3. Si es válido, lo verás ordenado y con sangrías. Si no, el validador te avisa que hay un error.
  4. Ve al punto del error y compáralo con las causas de abajo.

Un detalle que confunde a muchos: cuando un mensaje dice at position 57, cuenta caracteres desde cero, incluidos espacios y saltos de línea. Y el error suele estar justo antes de esa posición, no en ella: el lector de JSON avanza hasta que encuentra algo que no esperaba.

Las 7 causas más comunes

1. Coma al final del último elemento

Es el error número uno. Pasa cuando borras la última línea de una lista y dejas la coma de la anterior.

  • Mal: {"nombre": "Ana", "edad": 30,}
  • Bien: {"nombre": "Ana", "edad": 30}

Lo mismo en listas: [1, 2, 3,] no es válido. JavaScript y otros lenguajes aceptan esa coma final, por eso el código funciona y el JSON no. Mensajes típicos: Expected double-quoted property name o Unexpected token }.

2. Comillas simples en lugar de dobles

JSON solo acepta comillas dobles, tanto en claves como en textos.

  • Mal: {'nombre': 'Ana'}
  • Bien: {"nombre": "Ana"}

Esto sale muchísimo cuando alguien imprime un diccionario de Python y lo pega como si fuera JSON: {'activo': True} tiene comillas simples y un valor que JSON no reconoce. Si generas el JSON desde Python, usa json.dumps() en vez de convertir el diccionario a texto directamente.

3. Claves sin comillas

En un objeto de JavaScript puedes escribir {nombre: "Ana"}. En JSON no: toda clave va entre comillas dobles.

  • Mal: {nombre: "Ana", edad: 30}
  • Bien: {"nombre": "Ana", "edad": 30}

Si copiaste el objeto de un archivo de código, revisa todas las claves, no solo la primera.

4. Comentarios

JSON no admite comentarios. Ni // esto ni /* esto */.

Tienes dos opciones:

  • Borrarlos, si eran notas para ti.
  • Convertirlos en un campo, si la nota tiene que viajar con los datos: "_nota": "precio sin IVA".

Algunos archivos de configuración usan una variante de JSON que sí acepta comentarios, y por eso a veces parece que sí se puede. Pero si lo vas a leer con un lector de JSON estándar, fallará.

5. Caracteres sin escapar dentro de un texto

Dentro de un texto entre comillas hay caracteres que no puedes poner tal cual. Se escriben con una barra invertida delante:

Lo que quieres poner Cómo se escribe dentro del texto
Comilla doble " \"
Barra invertida \ \\
Salto de línea \n
Tabulador \t

Los dos casos que más fallan:

  • Comillas dentro del texto. "mensaje": "Le dijo "hola"" corta el texto antes de tiempo. Correcto: "mensaje": "Le dijo \"hola\"".
  • Rutas de Windows. "ruta": "C:\Users\ana\datos.json" falla porque \U, \a y \d no son escapes válidos. Correcto: "ruta": "C:\\Users\\ana\\datos.json", o usa barras normales: "C:/Users/ana/datos.json".

Si pegaste un texto de varias líneas directo entre comillas, verás algo como Bad control character in string literal: cambia cada salto de línea por \n.

6. Valores que no existen en JSON

JSON solo entiende seis tipos de valor: textos entre comillas dobles, números, true, false, null, objetos {} y listas []. Todo lo demás rompe el archivo:

  • undefined, NaN e Infinity (de JavaScript): cámbialos por null.
  • True, False y None (de Python) o TRUE: escríbelos como true, false y null, en minúsculas.
  • Números con cero a la izquierda como 007, con signo +5, que empiezan con punto .5 o en hexadecimal 0x1F.
  • Fechas sin comillas como 2024-05-10: van como texto, "2024-05-10".

Ojo con los ceros a la izquierda: un código postal como 01000 no debe ir como número. Aunque lo arreglaras quitando el cero, perderías el dato. Ponlo como texto: "cp": "01000". Lo mismo con teléfonos, folios o claves de producto.

7. Comillas tipográficas y caracteres invisibles

Este es el más desesperante, porque a simple vista el JSON está perfecto. Si copiaste el texto de un procesador de textos, un chat o un correo, es probable que las comillas rectas " se hayan convertido en comillas curvas “ así ”. Para JSON son caracteres distintos y no cuentan como comillas.

También pueden colarse espacios no separables o caracteres invisibles al inicio del archivo, que tampoco se ven pero hacen fallar la lectura.

Cómo arreglarlo:

  • Busca “ y ” y reemplázalas por ".
  • Si el error apunta a un lugar donde no ves nada raro, borra ese tramo y escríbelo a mano.
  • Evita armar o editar JSON en procesadores de texto; usa un editor de texto plano.

Si no es ninguna de estas

  • Llaves o corchetes sin cerrar. El mensaje Unexpected end of JSON input casi siempre significa que el JSON está incompleto: falta un } o un ], o el archivo se cortó (una copia a medias, una descarga interrumpida, una respuesta truncada). Al formatearlo con sangrías es más fácil ver qué bloque quedó abierto.
  • Varios objetos pegados. {"id": 1}{"id": 2} no es un JSON válido. Envuélvelos en una lista y sepáralos con comas: [{"id": 1}, {"id": 2}].
  • No es JSON, es HTML. Unexpected token < in JSON at position 0 quiere decir que lo que recibiste empieza con <: casi siempre una página de error (404, 500) o una pantalla de inicio de sesión. El problema está en la petición, no en el JSON.
  • Archivo vacío. Un archivo o respuesta sin contenido tampoco es JSON válido.

Si tienes una versión anterior que sí funcionaba, compárala con la que falla en Comparar dos textos para ver exactamente qué cambió.

Por qué conviene validarlo sin subirlo

Un JSON rara vez es inofensivo: suele traer llaves de API, tokens, correos de clientes, direcciones o configuraciones internas. Pegarlo en un validador que lo manda a un servidor es entregarle esos datos a alguien más.

El Formateador y validador de JSON de Utiliobox funciona en tu navegador: el JSON se procesa en tu dispositivo y no se sube a ningún lado. Puedes pegar ahí la respuesta real de tu API sin tener que borrar datos antes.

Valida tu JSON ahora

Pega tu JSON en el Formateador y validador de JSON, encuentra el error y corrígelo con la lista de arriba. Es gratis, no tienes que instalar nada y tus datos no salen de tu dispositivo.

La herramienta de esta guía

Formateador y validador de JSON

Funciona dentro de tu navegador: nada de lo que pongas sale de esta página.

Abrir Formateador y validador de JSON

Más guías