Formateador y validador de JSON

Se ejecuta en tu navegador; no se sube nada

Formatea, valida y minifica JSON. Los errores señalan la línea y la columna exactas.

Input

Formatted JSON appears here as you type.

Ready
Ln 1, Col 1

Qué hace el formateador

JSON es el formato que usan la mayoría de las APIs web para el cuerpo de las peticiones y respuestas. Los servidores suelen enviarlo minificado, sin espacios ni saltos de línea, lo que es compacto pero difícil de leer. Formatear (pretty-print) añade sangría para que veas qué claves pertenecen a qué objeto; minificar la quita de nuevo.

Para formatear JSON la herramienta tiene que analizarlo, así que formatear también valida. Si el texto no es JSON válido, obtienes la línea y la columna donde se detuvo el análisis, qué se esperaba ahí y la causa habitual. Los comentarios, las comas finales, las comillas simples, las claves sin comillas y el True/None de Python se pueden corregir automáticamente: la herramienta lista primero cada cambio y no aplica nada hasta que lo confirmas.

Aquí formatear nunca cambia un valor. La herramienta usa su propio parser en lugar de JSON.parse, así que los números conservan los dígitos con los que se escribieron (12345678901234567890 y 1.50 se quedan igual), los escapes como \u00e9 siguen siendo escapes y las claves duplicadas se quedan donde estaban. Cuando un documento contiene datos que JSON.parse cambiaría, como enteros mayores que 2^53 o una clave que aparece dos veces, el Inspector los lista en Data warnings.

Cómo usar esta herramienta

  1. 1Pega JSON en el panel Input, arrastra un archivo .json encima o pulsa Ctrl+O para abrir uno (hasta 5 MB). En Examples hay muestras para probar.
  2. 2La pestaña Output muestra el resultado mientras escribes. Elige la sangría (2 espacios, 4 espacios o tabuladores), ordena las claves o cambia entre Pretty y Minified. Las flechas del margen pliegan objetos y arrays.
  3. 3Para reescribir la propia entrada, usa Format (Shift+Alt+F) o Minify (Shift+Alt+M). Ctrl+Z deshace cualquiera de los dos, igual que Clear y las correcciones aplicadas.
  4. 4Si el JSON no es válido, la barra de estado y la pestaña Output indican dónde. Pulsa F8 para poner el cursor en el error, o Review fixes para ver las reparaciones automáticas.
  5. 5Tree, Table, JSONPath y Compare muestran los mismos datos de otras formas: selecciona un nodo del árbol para copiar su ruta o su valor, consulta con una expresión como $.items[?(@.price < 10)].id, o pega un segundo documento para ver la lista de cambios.
  6. 6Copia la salida, o descárgala formateada o minificada (Ctrl+S). Pulsa ? para ver todos los atajos de teclado.

Solución de problemas

Coma final: quita la , antes de }
JSON no permite una coma después del último elemento de un objeto o array. Bórrala o usa Review fixes. Suele venir de código JavaScript o de un archivo de configuración escrito a mano.
Los nombres de las propiedades deben ir entre comillas dobles
El texto es un objeto literal de JavaScript ({name: 'x'}), no JSON. Cada clave y cada cadena necesitan comillas dobles. Review fixes las añade.
True es de Python; JSON usa true
Los datos se imprimieron con print() o str() de Python. Usa json.dumps() para generar JSON, o deja que Review fixes sustituya True, False y None.
Fin de entrada inesperado: el objeto abierto en la línea 1 no está cerrado
El texto termina antes de que se cierren todos los { y [. Probablemente una respuesta copiada quedó cortada; cópiala otra vez, o guárdala en un archivo y ábrelo.
Contenido inesperado después del valor JSON
Hay dos o más valores JSON seguidos. Envuélvelos en un array o, si son logs en JSON delimitado por saltos de línea (NDJSON), revisa una línea cada vez.
El texto empieza con una marca de orden de bytes (BOM)
El archivo se guardó como «UTF-8 con BOM». Muchos parsers rechazan esa marca invisible del principio. Guárdalo como UTF-8 normal o usa Review fixes para quitarla.
Las cadenas no pueden ocupar varias líneas
Una cadena contiene un salto de línea real, a menudo por pegar texto con saltos de línea. Sustituye el salto por \n.
Un número en tu código es distinto del que hay en el JSON
Los enteros mayores que 9.007.199.254.740.991 pierden precisión cuando JavaScript los analiza, así que un ID de 19 dígitos puede cambiar. Esta herramienta muestra los dígitos tal como se escribieron y avisa de ellos; en tu API, envía esos IDs como cadenas.

Preguntas frecuentes

¿Se sube mi JSON a algún sitio?

No. El análisis, el formateo y todas las vistas se ejecutan en la pestaña de tu navegador. Para que sobreviva a una recarga, lo que pegas se guarda en el almacenamiento de sesión de esta pestaña hasta que lo borras o cierras la pestaña. Copy link pone la entrada en el enlace después de #, una parte que los navegadores nunca envían a un servidor, pero cualquiera a quien le des el enlace podrá leerla. Tus ajustes, como la sangría, se guardan en este navegador.

¿Formatear cambia mis datos?

No. Los valores se copian exactamente como están escritos, incluidos los números grandes, los escapes y las claves duplicadas. Dos opciones cambian el texto a propósito: Sort keys reordena las claves (por código de carácter, así que las mayúsculas van antes que las minúsculas) y Minify quita los espacios fuera de las cadenas.

¿Qué pasa con las claves duplicadas?

Se conservan y se muestran tal como están escritas, con un aviso. El estándar JSON deja sin definir las claves duplicadas; JSON.parse y la mayoría de las librerías se quedan solo con el último valor, así que el código que lea este documento probablemente verá solo uno. Las vistas Table, Compare y JSONPath siguen la misma regla de que gana el último.

¿Qué sintaxis de JSONPath se admite?

La sintaxis habitual de Goessner: $ para la raíz, .key y ['key'], índices (también negativos), [*] y .. para el descenso recursivo, uniones como [0,2], rebanadas como [1:3] y filtros como [?(@.price < 10 && @.inStock)]. Los filtros comparan los números como números de JavaScript, así que los enteros mayores que 2^53 se comparan de forma aproximada.

¿Qué tamaño de archivo admite?

Los archivos de hasta 5 MB se abren directamente. Un documento de unos 4 MB tarda una fracción de segundo en comprobarse y formatearse en un portátil normal; por encima de unos 200 KB, la herramienta espera a que hagas una pausa al escribir antes de volver a comprobar. Un anidamiento de más de 2.000 niveles se notifica como error.