Saltar al contenido
SDETRole
SDETRole

JSON y datos

Comparador JSON (JSON Diff)

Compara dos documentos JSON semánticamente, con una ruta para cada cambio.

Se ejecuta íntegramente en tu navegador Sin registro

Original (expected)

Modified (actual)

Paste two JSON documents to compare them

Key order is always ignored. Tick “Ignore array order” to compare arrays as unordered sets.

Acerca de esta herramienta

Un diff de texto plano entre dos respuestas de API es ruidoso: las claves reordenadas y los distintos espacios aparecen como cambios aunque los datos sean idénticos. Este comparador analiza ambos documentos y compara su estructura, así que solo se informa de las diferencias reales. Cada una se muestra con una ubicación al estilo JSONPath ($.user.roles[1]) y un tipo: added (añadido), removed (eliminado), changed (cambiado) o type-changed (cambio de tipo), este último el clásico bug de "49.99" frente a 49.99. Úsalo para explicar una assertion que falla, revisar un cambio de contrato entre versiones de una API o comprobar la actualización de un snapshot antes de aceptarla.

Cómo usarla

  1. Pega el JSON esperado (o antiguo) a la izquierda y el real (o nuevo) a la derecha, o pulsa “Load sample”.
  2. Lee la lista de cambios: cada fila muestra el tipo de cambio, la ruta y los valores antes → después.
  3. Marca “Ignore array order” cuando los arrays sean en realidad conjuntos, como roles, etiquetas o resultados de búsqueda sin orden.
  4. Cambia a “Side by side” o “Unified” para ver los cambios en contexto; ambas vistas ordenan primero las claves para que no se informe de reordenaciones.

Preguntas frecuentes: Comparador JSON (JSON Diff)

¿Qué diferencia hay entre “changed” y “type-changed”?

“Changed” significa que el valor es distinto pero el tipo JSON es el mismo, por ejemplo "pending" que pasa a "shipped". “Type-changed” significa que el propio tipo es distinto, como un número que pasa a ser una cadena o un objeto que pasa a null. Los cambios de tipo suelen ser bugs de contrato que rompen los clientes con tipado estricto aunque el valor parezca el mismo.

¿Cómo se comparan los arrays con “Ignore array order” activado?

Cada elemento de la izquierda se empareja con un elemento profundamente igual de la derecha. Los sobrantes se indican como eliminados o añadidos en su propio índice. Los duplicados cuentan, así que [1, 2, 2] y [2, 1] siguen siendo distintos. Como los elementos se emparejan por igualdad completa, un objeto modificado dentro de un array sin orden aparece como una eliminación más una adición.

¿Puedo usar estas rutas en mis tests?

Sí. Las rutas usan notación de punto para las claves simples y notación de corchetes para las claves con espacios o símbolos, lo que funciona en el probador de JSONPath y se traslada directamente a assertions JSONPath en herramientas como REST Assured o Postman.

Escribe para buscar en todo SDETRole.

Búsqueda de texto completo con Pagefind · se ejecuta en tu navegador Abrir la página de búsqueda →