Comparador de diferencias JSON

Compara dos documentos JSON y ve al instante qué claves se añadieron, eliminaron o cambiaron, listadas por ruta de clave. Recorre objetos y arreglos de forma recursiva, y hasta las discrepancias de tipo se muestran como cambios. Todo se procesa en tu navegador, sin enviar nada a un servidor.

Consejos

  • Las rutas de clave se muestran con notación de punto y corchete, como `user.address[0].city`, así que puedes ubicar de inmediato qué valor anidado cambió, sin importar cuán profunda sea la estructura del JSON.
  • Los arreglos se comparan emparejando elementos por el mismo índice. Ten en cuenta que con solo reordenar los elementos de un arreglo, todos ellos se detectarán como cambiados.
  • Si una misma clave contiene una cadena en un documento y un objeto en el otro, esa discrepancia de tipo también se reporta como cambio, mostrando ambos valores en bruto lado a lado.
  • Al comparar respuestas de API antes y después de un despliegue, elimina primero los campos que siempre cambian, como marcas de tiempo o IDs de solicitud, para centrarte solo en las diferencias que realmente importan.
  • Incluso en un JSON con enorme cantidad de valores sin cambios, solo se muestra el recuento de hojas coincidentes, manteniendo el resultado legible en lugar de abrumador.

Preguntas frecuentes

Se usa habitualmente para comparar la respuesta de una API antes y después de un despliegue y detectar cambios no deseados, o para identificar diferencias entre archivos de configuración (como config.json) entre distintos entornos. Extraer solo las diferencias es mucho más rápido que comparar dos JSON a simple vista.

No. Las claves de un objeto se emparejan por nombre, así que da igual que A y B las listen en un orden distinto. Solo se considera si cada clave existe y si su valor coincide, ignorando el orden visual en el texto de origen.

Los arreglos se emparejan por índice (elemento 0, elemento 1, etc.), así que aunque el contenido real sea el mismo, un cambio de orden se detectará como un cambio en ese índice. Esta herramienta no admite una comparación de arreglos que ignore el orden.

No. Todo el proceso de comparación se ejecuta enteramente en el JavaScript de tu navegador, y el contenido introducido nunca se transmite a ningún servidor, por lo que puedes comparar con seguridad incluso respuestas que incluyan claves de API o datos personales.

Si JSON.parse falla, se muestra un mensaje de error indicando claramente si A o B tiene el formato inválido, y no se calcula ninguna diferencia. Esto te da un punto de partida para localizar errores comunes, como una coma faltante o una comilla sin cerrar.
ツールくん

A propósito — En qué se diferencia el emparejamiento de claves entre el diff de CSV y el de JSON

Nuestro comparador de diferencias CSV (dev.csv.csv_diff) compara filas y celdas usando una única columna clave designada para identificar cada fila. El JSON no tiene una estructura plana de filas y columnas: permite objetos anidados y arreglos, así que aunque ambas herramientas se llamen "comparadores de diferencias", el algoritmo de emparejamiento subyacente es bastante distinto. En lugar de una columna clave, esta herramienta usa una "ruta de clave" construida recursivamente desde la raíz hasta cada hoja como unidad de comparación.

Los arreglos son la parte más delicada al comparar JSON. Una fila de CSV se identifica de forma única por el valor de su columna clave, pero los elementos de un arreglo JSON no tienen ningún identificador garantizado. Esta herramienta simplemente empareja elementos por índice (orden de aparición), un diseño más adecuado para rastrear cambios en la estructura de un objeto o en valores primitivos —como en archivos de configuración o respuestas de API— que para rastrear adiciones y eliminaciones dentro del contenido de un arreglo.

En la práctica, una idea similar aparece en los pipelines de integración continua que comprueban automáticamente si el contrato de respuesta de una API REST ha cambiado. Esta herramienta prioriza la comodidad de funcionar enteramente en el navegador, pero el concepto subyacente se superpone con las pruebas de instantánea (snapshot testing) y las pruebas de contrato (contract testing): detectar diferencias en la estructura JSON de forma mecánica es un desafío recurrente en muchas etapas del desarrollo de software.

→ Ver todas las curiosidades