Comparador de JSON (diff) gratis
Compara la estructura de JSON con propiedades ignoradas, tolerancia numérica y opciones sin ordenar.
Cargando herramienta…
Cómo comparar JSON por estructura en lugar de formatear
Los cambios de formato pueden ocultar las diferencias importantes entre dos documentos JSON. La comparación estructural ignora el orden de la clave de objetos e informa cambios en los valores y el contenido de la matriz.
- Pegar o importar el documento JSON original.
- Proporcione el segundo documento y elige cualquier nombre de propiedad ignorado.
- Establecer la tolerancia numérica o la comparación sin orden cuando esas opciones coincidan con su tarea.
- Ejecute la comparación e inspeccione cada puntero JSON antes de descargar los resultados.
Cuando una comparación estructural de JSON ahorra tiempo
Un texto sencillo diff lucha con JSON. Si uno de los archivos se guarda con dos espacios de sangrado y el otro se minifica, cada línea se ve diferente incluso cuando los datos son idénticos. Este comparador analiza ambos documentos primero y compara los valores reales, por lo que sólo aparecen cambios reales en los datos en el informe.
Los usos típicos incluyen comprobar una respuesta API antes y después de una implementación, revisar un archivo de configuración que un compañero de equipo editó, confirmar que una exportación de datos coincide con la exportación de la semana pasada, y verificar los dispositivos de prueba. Los evaluadores de QA a menudo comparan una respuesta esperada con una real, y la lista de ignorados les permite saltar campos como marcas de tiempo o IDs de solicitud que cambian en cada llamada.
Ejemplo trabajado: un cambio de precio
Carga el ejemplo incorporado. El primer documento enumera dos libros con precios 12 y 18. El segundo es idéntico, excepto que el primer libro cuesta 15. Ejecutar Compara JSON con ninguna opción y el informe dice: equal is false, and the changes list holds one entry with path /store/books/0/price, Type changed, before 12 and after 15.
Ahora establece la tolerancia numérica absoluta a 3 y compara de nuevo. La diferencia es |15 - 12| = 3, que no es mayor que la tolerancia, por lo que el informe muestra igual como verdadero con una lista de cambios vacía. Devuelve la tolerancia a 0 y escribe el precio en el cuadro de ignorar. El resultado también es igual, porque cada propiedad llamada precio se salta a cualquier profundidad.
El informe es un archivo JSON que puede copiar o descargar. También registra las opciones que utilizó, por lo que un revisor puede ver por qué un campo no fue marcado.
Cómo funciona la comparación
Los objetos se comparan con el nombre de la propiedad, por lo que el orden de claves nunca importa. Una propiedad que existe sólo en el primer documento se reporta como removida, y una que existe sólo en el segundo se reporta como añadida. Cuando ambos lados mantienen un valor pero difieren, incluyendo un cambio de tipo como la cadena "12" versus el número 12, la entrada se marca cambia con ambos valores mostrados.
Las ubicaciones utilizan la sintaxis JSON Pointer de RFC 6901. Cada paso está separado por una barra, las posiciones de la matriz son números basados en cero, y una barra dentro de un nombre de clave se escribe como ~1 mientras que una tilde se escribe como ~0. Las matrices se comparan posición por posición a menos que marque la opción no ordenada, que ordena ambos arreglos por tu contenido serializado antes de comparar.
Cada documento puede ser de hasta 2 MB, con hasta 80.000 nodos y 60 niveles de anidación. La comparación se detiene después de 5.000 diferencias, lo que suele ser un signo de que los documentos no están relacionados o que un campo ruidoso debe ser ignorado.
Errores comunes a evitar
No usa la opción no ordenada para listas donde la posición tiene significado, como resultados clasificados o pasos ordenados. En modo no ordenado, un único elemento editado puede moverse a una nueva posición ordenada, por lo que puede ver varios índices vecinos marcados en lugar de un cambio limpio.
Sea preciso con la tolerancia. Es una cantidad absoluta aplicada a cada número del documento, por lo que una tolerancia de 0,5 destinada a los precios también ocultará una cantidad que se movió de 1 a 1.4. Por último, recuerda que los nombres ignorados se aplican por todas partes: ignorar id en el nivel superior también ignora cada id anidado.
Consejos útiles y limitaciones
- Los índices de array no ordenados se refieren al orden de comparación ordenado. Los valores duplicados se conservan.
- Ignorar campos cuidadosamente: una propiedad ignorada puede ocultar un cambio significativo.
- Compara primero una pequeña muestra de cada archivo para elegir una lista de ignorados sensatos antes de ejecutar los documentos completos.
- Mantén el informe descargado con tu solicitud de ticket o de pull para que otros puedan ver exactamente qué punteros cambiaron.
Preguntas frecuentes
¿La comparación JSON ignora el orden de la clave de objeto?
Sí. Las propiedades del objeto se comparan por nombre, por lo que la sangría y la ordenación de claves no crean diferencias.
¿Puedo aplicar la comparación descargada como un parche JSON?
No. La exportación contiene hallazgos y opciones de comparación, en lugar de operaciones de parche ejecutables.
¿Cómo es una propiedad faltante diferente de un valor nulo?
Una propiedad que no existe en un lado se reporta como agregado o eliminado, mientras que una propiedad establecida como nula en un lado y un valor en el otro se reporta como cambiado.
¿Es la tolerancia numérica un porcentaje?
No. Es una diferencia absoluta, por lo que una tolerancia de 0.01 permite que dos números que difieran entre 0.01 o menos cuenten como iguales.
¿Puedo ignorar un camino anidado en lugar de un nombre de propiedad?
No. La caja de ignorar toma nombres de propiedad separados por comas, y cada nombre se salta dondequiera que aparezca en cualquiera de los documentos.
Ambos documentos JSON se comparan localmente en un trabajador del navegador.
Lee nuestra política de privacidad · Acerca de ToolWorld Online
