Comparación estructural de JSON

Compara dos estructuras JSON y revisa las adiciones, eliminaciones y modificaciones en rutas explícitas, conservando la escritura de los números sin redondearlos.

Esta página muestra las herramientas disponibles en este idioma dentro del alcance actual. Esto no significa que todas las herramientas del sitio estén traducidas a todos los idiomas.

El procesamiento es local, sin subir las entradas ni guardarlas automáticamente. Cada entrada tiene un límite de 256 KiB en UTF-8, 512 KiB en total; profundidad 32, 30 000 valores por entrada, 2000 diferencias y un informe de 1 MiB. La comparación se detiene tras 5 segundos.

El orden de las claves de un objeto no influye. Las matrices se comparan por índice, sin detectar movimientos. Los números se comparan por su escritura: 1, 1.0 y 1e0 son diferentes, sin redondear números grandes. Las cadenas JSON se decodifican para compararlas sin normalización Unicode. Cambiar el tipo de una rama, añadirla o eliminarla produce una fila con la rama completa.

Entradas de la comparación

Cómo usarla

Pega los textos JSON anterior y posterior y compáralos. Revisa el tipo de cambio, la ruta y el texto JSON antes y después de cada cambio; recorre las páginas de la vista previa cuando lo necesites. Copia el informe completo o descárgalo como json-diff.json mediante la acción correspondiente. Editar una entrada invalida el resultado anterior; el informe no sustituye ninguna entrada.

Ejemplo práctico

Antes: {"n":1,"a":[1,2]}; después: {"a":[2,1],"n":1.0}. Hay tres cambios: /n del texto 1 al texto 1.0, /a/0 de 1 a 2 y /a/1 de 2 a 1. Cambiar solo el orden de las dos claves del objeto no añade ningún cambio. La clave a/b~c aparece en /a~1b~0c.

Compatibilidad y límites

El orden de las claves de un objeto no influye, pero las matrices se comparan por índice; no se deducen movimientos de elementos ni coincidencias de conjuntos. Los números se comparan por su escritura original: 1, 1.0 y 1e0 son diferentes y nunca se convierten a Number. Las cadenas JSON se decodifican para compararlas sin normalización Unicode. Añadir o eliminar una rama, o cambiar su tipo, produce una fila que contiene la rama completa. Una ruta vacía indica la raíz; JSON Pointer representa ~ como ~0 y / como ~1. Los campos before y after del informe son cadenas que contienen JSON compacto, no valores numéricos redondeados. Se omite un campo cuando falta ese lado, mientras que JSON null se representa mediante la cadena "null". El informe describe diferencias; no es un JSON Patch para aplicar cambios. El procesamiento se realiza en el navegador sin ejecutar el contenido JSON, subirlo ni guardarlo o copiarlo automáticamente.

Preguntas frecuentes

¿Un resultado igual significa que los textos son idénticos byte a byte?

No. Los espacios fuera de las cadenas, el orden de las claves de un objeto y las formas de escape de los caracteres pueden diferir, aunque los valores sean iguales según esta política. En ese caso, la lista changes está vacía y el informe se puede copiar o descargar. En cambio, una escritura distinta de un número o un orden distinto de los elementos de una matriz cuentan como diferencia aunque su significado parezca similar.

Herramientas relacionadas