Resumen / Desarrollo y código / Comparar JSON
Desarrollo y código 100% en el navegador y sin conexión

Comparar JSON

Compara dos documentos JSON y lista cada valor añadido, eliminado o modificado con su ruta JSON Pointer. Copia el resultado como texto o como JSON Patch.

Pega o escribe tu entrada; el resultado aparece al instante y los errores se muestran debajo.

Tus archivos y datos nunca salen de tu navegador: no se sube nada.

Los objetos se comparan por clave, así que el orden de las claves nunca cuenta. Los arrays se comparan por posición, salvo que ignores el orden. En ese caso, un elemento modificado aparece como uno eliminado y otro añadido.

Diferencias

    Límites: 2 000 000 de caracteres por lado. Los números se leen con JSON.parse, así que los enteros por encima de 2^53 pierden precisión. Si una clave aparece dos veces en el texto, gana el último valor. La lista muestra las primeras 1000 diferencias; los botones de copiar usan todas.

    Comparar JSON a ojo funciona hasta que el archivo pasa de las cincuenta líneas. Esta herramienta lee los dos textos, compara los datos y no el formato, y te da una lista corta: qué ruta cambió, de qué manera y con qué valores. Si alguien reordenó las claves o cambió la sangría, eso no aparece como diferencia.

    Qué pasa con el JSON que pegas

    Nada sale de tu navegador. El análisis usa JSON.parse en tu equipo, la herramienta no envía ninguna petición y no guarda el texto; lo puedes comprobar en el panel de red. El portapapeles solo se usa cuando pulsas un botón de copiar.

    Comparar JSON: rutas, tipos de cambio y valores

    La ruta sigue RFC 6901 (JSON Pointer): /usuarios/0/nombre es la clave nombre del primer elemento de usuarios. Una barra dentro de una clave se escribe ~1 y una tilde ~0. Hay cuatro tipos de cambio: añadido, eliminado, modificado y tipo cambiado. Cada uno lleva color, un símbolo (+, -, ~, !) y una etiqueta de texto, de modo que el color no es lo único que informa.

    Encima de la lista, una línea cuenta cada tipo. Si los dos lados son iguales, aparece "Sin diferencias". Los valores de más de 200 caracteres se recortan y el botón "Ver valor completo" los despliega.

    Pasos para comparar dos respuestas de una API

    1. Pega el original en el cuadro izquierdo y la versión modificada en el derecho. Al abrir la página ya hay un ejemplo.
    2. Espera un instante: la comparación se hace 200 ms después de la última tecla. Si un lado no es JSON válido, el mensaje indica el lado, la línea y la columna.
    3. Pulsa Formatear ambos para dar sangría al JSON válido, o Intercambiar lados si los pegaste al revés.
    4. Activa Ignorar el orden de los arrays si el orden de los elementos no te importa.
    5. Usa Copiar diff como texto para una línea por diferencia o Copiar como JSON Patch para un parche que un programa pueda aplicar.

    Arrays, claves y números: qué cuenta como igual

    Los objetos se comparan por clave: {"a":1,"b":2} es igual a {"b":2,"a":1}. Los arrays se comparan por posición. [1,2,3] frente a [3,2,1] da dos cambios, porque el elemento central coincide.

    Con la opción de ignorar el orden, la herramienta crea para cada elemento un texto canónico con las claves ordenadas y empareja los elementos iguales como un multiconjunto. Los arrays anidados también se comparan sin orden. A cambio, un elemento modificado por dentro aparece como uno eliminado y otro añadido.

    Los números se comparan por valor: 1 y 1.0 son iguales. null no es lo mismo que una clave ausente. Un objeto vacío frente a un array vacío es un cambio de tipo, igual que 1 frente a "1". Las cadenas deben coincidir exactamente, con mayúsculas y espacios.

    Exportar las diferencias como JSON Patch

    El parche (RFC 6902) usa add, remove y replace y convierte el lado izquierdo en el derecho. Los elementos de un array se eliminan de la posición más alta a la más baja y se añaden de la más baja a la más alta. No genera move ni copy. Con el orden ignorado, el botón queda desactivado.

    Límites: 2 000 000 de caracteres y enteros grandes

    Cada lado admite 2 000 000 de caracteres; más que eso se rechaza con un mensaje. Los enteros por encima de 2^53 pierden precisión: 9007199254740993 se lee como 9007199254740992, así que dos números enormes distintos pueden parecer iguales. Si una clave aparece dos veces, gana el último valor. Los comentarios y las comas finales no son JSON y el error indica línea y columna. La lista muestra las primeras 1000 diferencias; los botones de copiar usan todas. Una marca BOM al inicio se elimina antes del análisis.

    Preguntas frecuentes (FAQ)

    Pega el original en el cuadro izquierdo y la versión modificada en el derecho. Tras una breve pausa aparece la lista con la ruta, el tipo de cambio y los valores antes y ahora.