JSON Diff: comparar objetos JSON

Pega dos documentos JSON para ver exactamente qué ha cambiado. Cada diferencia se lista por ruta, como $.users[2].email, y ni el formato ni el orden de las claves causan falsas alarmas.

Funciona en tu navegadorSin registroNo se sube nada

El orden de las claves siempre se ignora.

Cómo usar: JSON Diff

  1. Pega el JSON original a la izquierda y el modificado a la derecha, o abre dos archivos.
  2. Los errores de sintaxis se muestran bajo cada cuadro con la línea y la columna, para que los corrijas rápidamente.
  3. Lee la tabla Rutas modificadas: cada fila indica si un valor se añadió, se eliminó o cambió, con los valores antiguo y nuevo.
  4. Marca Ignorar orden de arrays cuando las listas sean conjuntos, por ejemplo etiquetas o permisos.
  5. Desplázate hasta la vista lado a lado para ver los cambios en contexto, o copia la lista de cambios como JSON.

Por qué un diff estructural de JSON supera a un diff de texto

Un diff de texto plano compara caracteres y líneas, así que dos archivos JSON con los mismos datos pueden parecer totalmente distintos si uno está minificado, indentado de otra forma o tiene las claves en otro orden. Esta herramienta analiza primero ambos documentos y compara los datos: los objetos se comparan clave por clave sin importar el orden, y los números, cadenas, booleanos y null se comparan por valor. Solo se informa de los cambios reales.

Cómo se informa de los cambios

Cada diferencia recibe una ubicación al estilo JSONPath, como $.owner.email o $.items[3].price, y uno de tres tipos:

  • añadido: la clave o el elemento del array solo existe en el JSON modificado.
  • eliminado: solo existe en el JSON original.
  • modificado: existe en ambos, pero el valor difiere, incluidos los cambios de tipo, como una cadena que pasa a ser un número.

Los arrays se alinean con un algoritmo de subsecuencia común más larga, de modo que insertar un elemento al principio de una lista se registra como una sola adición en lugar de marcar como modificados todos los elementos siguientes.

Ignorar el orden de los arrays

Muchas APIs devuelven listas cuyo orden no tiene significado, como roles, etiquetas o IDs. Con Ignorar orden de arrays activado, los arrays se comparan como colecciones: un elemento solo cuenta como añadido o eliminado si no tiene un equivalente igual en el otro lado. La vista lado a lado ordena entonces los elementos de los arrays para que las listas iguales queden alineadas.

Usos típicos

Comparar respuestas de API entre staging y producción, comprobar qué cambió una migración en un archivo de configuración, revisar diferencias entre dos archivos package.json o tsconfig y depurar tests de snapshot.

Preguntas frecuentes

¿Importa el orden de las claves al comparar JSON?
No. Los objetos JSON no tienen orden, así que {"a":1,"b":2} y {"b":2,"a":1} se consideran iguales. El orden de los arrays sí importa por defecto porque los arrays son ordenados, pero puedes desactivarlo con Ignorar orden de arrays.
¿Se sube mi JSON a un servidor?
No. Ambos documentos se analizan y comparan en tu navegador. No se envía nada por la red, lo que hace que la herramienta sea segura para respuestas de API con tokens o datos de clientes.
¿Qué significan rutas como $.users[2].email?
$ es la raíz del documento, .users es una clave y [2] es el tercer elemento de un array (los índices empiezan en 0). Las claves con espacios o caracteres especiales se escriben entre corchetes, como $["first name"].
¿Es 1 igual a 1.0?
Sí. Ambos se interpretan como el mismo número, así que no se marcan como diferencia. Un número y una cadena, como 1 y "1", son distintos y se marcan como modificados.
¿Puedo comparar JSON con comentarios o comas finales?
El JSON estándar no los permite, así que esa entrada se marca con la línea y la columna exactas. Quita los comentarios o las comas, o limpia antes el documento en el formateador JSON.

Herramientas relacionadas