Comparar JSON: diferencias entre dos documentos
Compare dos documentos JSON campo por campo; cada valor agregado, eliminado o cambiado aparece con su ruta
Sus datos se quedan con usted. La conversión ocurre dentro del navegador; no se envía nada a ningún servidor.
¿Le sirvió esta herramienta?
Gracias, su comentario llegó.
Cómo funciona
Pegue el JSON anterior en el panel izquierdo y el nuevo en el derecho; las diferencias aparecen enseguida abajo. Si prefiere un solo cuadro, ponga entre los dos documentos un renglón que diga solo ---. El signo al inicio de cada renglón indica qué pasó: + se agregó un campo, - se eliminó un campo, ~ cambió un valor. En el ejemplo, el precio baja de 450 a 399, desaparece el estado del vendedor, se agrega "oferta" a las etiquetas y las existencias quedan entre comillas; el resultado muestra "~ $.precio: 450 → 399", "- $.vendedor.estado", "+ $.etiquetas[2]" y "~ $.existencias: 42 → \"42\"" con el aviso de cambio de tipo. El orden en que se escriben las claves y la sangría no cuentan. Si en una lista solo cambió el orden, ponga "Orden dentro de los arrays" en "No importa". Si uno de los documentos está dañado, se indica cuál y en qué renglón del cuadro.
Esta herramienta también se busca como comparar json, comparar dos json, comparar json online, diferencias entre json, json diff, json compare.
¿Qué es JSONPath (ruta)?
Una ruta JSON es la dirección de un valor dentro del documento. $ es la raíz, un punto abre un campo interno y un número entre corchetes elige un elemento de la lista: $.vendedor.nombre es el campo nombre del objeto vendedor y $.etiquetas[2] la tercera etiqueta (se cuenta desde 0). Las claves con espacio o guion se escriben $["nombre completo"]. Como cada diferencia se da con esta ruta, no tiene que buscar el cambio en un documento largo.
¿Qué es JSON diff?
Un JSON diff compara dos documentos JSON como datos y lista lo que se agregó, se eliminó o cambió. A diferencia de una comparación de texto por renglones, ignora el formato, la sangría y el orden de las claves, pero sí toma en cuenta el tipo de cada valor. Los programadores lo usan para ver cómo cambió la respuesta de una API entre versiones, por qué dos entornos se comportan distinto con sus archivos de configuración o qué registros actualizó una exportación.
¿Qué diferencia hay entre comparar JSON y comparar texto?
Una comparación de texto trata los dos archivos como cadenas y los compara renglón por renglón; basta una sangría o un orden de claves distinto para que aparezca una diferencia. Una comparación JSON lee primero los dos documentos como árbol y compara los valores en la misma ruta; el formato no cuenta, y en cambio detecta cambios de tipo como 42 que pasa a "42". Use la comparación de texto para contratos, artículos o texto simple, y la comparación JSON para respuestas de API y archivos de configuración.
Por qué comparar renglón por renglón engaña con JSON
Las herramientas comunes de comparación de texto comparan renglones. El mismo JSON puede salir de un programa con las claves en orden alfabético y de otro en orden de inserción, en un solo renglón o con sangría. La comparación por renglones marca entonces cientos de diferencias aunque los datos sean idénticos. Esta herramienta convierte primero los dos documentos en árbol y compara los valores que están en la misma ruta; el formato nunca llega al resultado.
Al revés, un número que pasó a texto se escapa con facilidad: 42 y "42" se ven casi iguales, pero el programa que lee el JSON espera un número en un caso y texto en el otro. Por eso la herramienta agrega el cambio de tipo al final del renglón (número → texto).
- {"a":1,"b":2} y {"b":2,"a":1} → sin diferencias
- [1,2] y [2,1] → 2 cambios si el orden importa, ninguno si no
- 18 y "18" → ~ cambiado, tipo: número → texto
Qué opción elegir en cada caso
Si el orden de una lista tiene sentido en la respuesta de una API (resultados ordenados, pasos, páginas), deje "Importa"; los elementos se comparan posición por posición. Si la lista funciona como un conjunto (etiquetas, permisos, una lista de correo), elija "No importa"; un elemento coincide esté donde esté y solo quedan los que de verdad se agregaron o eliminaron.
Para un reporte de cambios basta con "Solo las diferencias". Para revisar dos archivos de configuración completos, elija "Todos los campos"; los valores que no cambiaron también se listan, con sangría. Los enteros muy grandes (más de 2^53, como identificadores de 19 cifras) pueden redondearse en JavaScript, así que la herramienta avisa en el renglón de resultado cuando encuentra uno.
Preguntas frecuentes
¿Cómo se comparan dos archivos JSON?
Pegue el primer JSON en el panel izquierdo y el segundo en el derecho. La herramienta compara ambos como árbol y muestra cada diferencia con su ruta: "~ $.precio: 450 → 399" indica que cambió el precio, "- $.vendedor.estado" que se eliminó el campo.
¿Un orden distinto de las claves cuenta como diferencia?
No. En un objeto JSON el orden de las claves no tiene significado; {"a":1,"b":2} y {"b":2,"a":1} llevan los mismos datos y la herramienta indica que no hay diferencias. También se ignoran la sangría, los espacios y los saltos de renglón.
¿Puedo ignorar el orden de los elementos en los arrays?
Sí. Ponga "Orden dentro de los arrays" en "No importa". Así ["a","b"] y ["b","a"] cuentan como iguales, y solo los elementos que están en una lista y no en la otra aparecen con + o -.
¿El JSON que pego se envía a algún lado?
No. La comparación se hace por completo en su navegador; aunque pegue un JSON con claves de API o datos de clientes, no llega a ningún servidor.