Formateador y validador JSON

Acrafto Team Desarrolladores
Actualizado
Esperando datos. Pega JSON arriba o suelta un archivo .json.

Pega cualquier JSON en el campo de arriba y este formateador y validador JSON online lo comprueba mientras escribes. Si la entrada es válida, se formatea con la sangría que elijas o se minifica en una sola línea. Si no lo es, obtienes un error preciso con la línea y la columna, un fragmento resaltado y, para los fallos habituales, una corrección con un clic. Todo se ejecuta en tu navegador, así que las respuestas de API, los archivos de configuración y las exportaciones nunca salen de tu ordenador.

Qué hace este formateador JSON

  • Formatear JSON con 2 espacios, 4 espacios o tabuladores. El resultado conserva el orden original de las claves, salvo que marques Ordenar claves.
  • Minificar JSON eliminando todos los espacios y saltos de línea. El indicador de tamaño bajo el resultado muestra cuántos bytes has ahorrado.
  • Validar JSON en directo según RFC 8259, el estándar JSON vigente. La línea de estado se pone verde en cuanto el documento es correcto.
  • Corregir errores comunes automáticamente: comas finales, comillas simples, claves sin comillas, comentarios, True, None y NaN al estilo de Python y números como .5 o +1.
  • Cargar archivos con el botón Abrir archivo o soltando un archivo .json sobre la entrada. Después puedes descargar el resultado o devolverlo a la entrada para otra pasada.

Validar JSON: por qué el mensaje de error importa más que el color rojo

La mayoría de los validadores online solo dicen que algo está mal. Los navegadores no son mucho mejores: JSON.parse en Chrome informa Unexpected token } in JSON at position 148, mientras que Firefox dice expected property name or '}', y ninguno te indica en qué línea mirar. Esta herramienta usa su propio analizador, que recuerda dónde empieza cada token. Cuando se detiene, obtienes la línea y la columna, un extracto de esa línea con un signo ^ bajo el carácter problemático y una pista en lenguaje claro, como Probablemente falta una coma entre dos propiedades. El botón Ir al error lleva el cursor directamente a esa posición de la entrada.

Los errores más frecuentes que vemos en los documentos pegados:

EntradaProblemaJSON correcto
{'name': 'Ada'}comillas simples{"name": "Ada"}
{name: "Ada"}clave sin comillas{"name": "Ada"}
[1, 2, 3,]coma final[1, 2, 3]
{"a": 1 "b": 2}falta una coma{"a": 1, "b": 2}
{"ok": True}literal de Python{"ok": true}
{"x": 007}cero a la izquierda{"x": 7} o {"x": "007"}
// commentcomentariono permitido en JSON

El botón Corrígelo por mí repara todos estos casos excepto la coma que falta y el cero a la izquierda. La corrección es deliberadamente conservadora: nunca adivina dónde va una coma que falta, porque ponerla en el lugar equivocado cambia el significado de los datos, y 007 podría ser el número 7 o un código. En esos casos obtienes la posición exacta.

Números grandes, orden de claves y otras cosas que suelen romperse

Muchos formateadores llaman a JSON.parse y después a JSON.stringify. Ese viaje de ida y vuelta daña los datos sin avisar. Un ID de Twitter o de Snowflake como 1234567890123456789 supera el límite de 2^53 de los números de JavaScript y vuelve como 1234567890123456800. El valor 1.0 se convierte en 1, y 1e3 en 1000. Este formateador nunca convierte los números a coma flotante. Copia cada literal exactamente como estaba escrito, así que el resultado es un reformateo fiel de la entrada y no una reinterpretación. Lo mismo ocurre con las secuencias de escape dentro de las cadenas: "\u00e9" sigue siendo "\u00e9" y no se convierte en "é".

El orden de las claves también se conserva. La especificación JSON dice que los miembros de un objeto no tienen orden, pero los archivos de configuración, los datos de prueba y las revisiones de código se leen mucho mejor cuando el orden es estable. Si prefieres una forma canónica, por ejemplo para comparar dos respuestas de API en una herramienta de diff, activa Ordenar claves y ambos documentos listarán sus propiedades por orden alfabético en todos los niveles de anidamiento.

Formatear JSON o minificar JSON: cuándo usar cada uno

El JSON formateado es para personas. Úsalo cuando revises una respuesta de API, escribas un package.json, un tsconfig.json o un documento OpenAPI, o cuando guardes datos de prueba en un repositorio donde cada diff deba mostrar un cambio por línea. Dos espacios es la convención en el mundo JavaScript, cuatro espacios es lo habitual en proyectos de Python y .NET, y los tabuladores permiten que cada lector elija su propio ancho.

El JSON minificado es para máquinas. Los espacios en blanco suelen ocupar entre el 20 y el 40 por ciento de un documento formateado, así que quitarlos reduce los datos que se envían a los navegadores, los valores guardados en Redis o en una columna de base de datos y los atributos data-* incrustados en HTML. Gzip recorta parte de esa diferencia, pero la versión minificada sigue comprimiéndose en un resultado más pequeño. El indicador de tamaño bajo el resultado muestra la diferencia exacta para tu documento.

JSON en la terminal y en los editores

Para archivos que procesas a menudo, una herramienta de línea de comandos es más rápida que cualquier web. jq . file.json formatea, jq -c . file.json minifica y python -m json.tool file.json funciona en cualquier equipo con Python instalado. Visual Studio Code formatea JSON con Shift+Alt+F y lo valida contra un esquema cuando añades una propiedad $schema. Esta página sirve para el resto de casos: una respuesta copiada de la pestaña de red, una línea de log, un fragmento de configuración sacado de una wiki o una comprobación rápida en un equipo donde no puedes instalar nada.

Herramientas relacionadas en este sitio: el codificador y decodificador Base64 decodifica la parte de datos (payload) de un JWT, que es JSON codificado en Base64url. El convertidor de Unix timestamp convierte en fechas legibles los números createdAt que aparecen en la mayoría de las respuestas de API, y el decodificador de UUID te muestra la versión y la marca de tiempo de los identificadores de tus datos. Encontrarás más utilidades en herramientas para desarrolladores.

Preguntas frecuentes

¿Se sube mi JSON a un servidor? No. El análisis, el formateo y la corrección se ejecutan por completo en tu navegador con JavaScript. Una vez cargada la página, puedes desconectar la red y la herramienta sigue funcionando. No se registra ni se guarda nada.
¿Por qué el validador rechaza los comentarios si mi editor los acepta? Douglas Crockford, el autor de JSON, eliminó los comentarios del formato a propósito para evitar que se usaran como directivas para el analizador. Archivos como tsconfig.json o .vscode/settings.json son técnicamente JSONC, un superconjunto que admiten los editores. Los analizadores estrictos de las API, las bases de datos y la mayoría de los lenguajes de programación los rechazan. El botón de corrección elimina los comentarios para que el resultado sea válido en cualquier parte.
¿Puedo formatear JSON Lines o varios objetos a la vez? Un documento JSON contiene exactamente un valor. Si pegas varios objetos separados por comas o saltos de línea, el validador se detiene en el primer valor sobrante. Envuélvelos entre corchetes para formar un array y luego formatea. El botón de corrección no lo hace automáticamente porque no puede saber si la entrada debía ser un único documento.
¿Cuál es el tamaño máximo? No hay un límite fijo. Los documentos de unos pocos megabytes se formatean en mucho menos de un segundo en un portátil. El resaltado de sintaxis se desactiva a partir de unos 400 kB para que la página siga respondiendo con fluidez, pero copiar y descargar siguen funcionando.
¿Ordenar las claves cambia los datos? No. Los objetos JSON no tienen orden por definición (consulta el artículo sobre JSON en Wikipedia), así que un analizador lee el documento ordenado y el original como el mismo valor. Los arrays nunca se reordenan, porque su orden forma parte de los datos.
¿Cómo escapo un JSON para incrustarlo en una cadena? Primero minifícalo y después escapa cada barra invertida y cada comilla doble. Muchos lenguajes lo hacen directamente: JSON.stringify(JSON.stringify(obj)) en JavaScript o json.dumps(json.dumps(obj)) en Python generan una cadena JSON que contiene el texto JSON.

Agradecería que compartieras estas páginas con amigos, las guardaras en favoritos o las enlazaras. ¡Gracias! 🙏