JSON herramientas · 6 minutos de lectura
JSON diff: comparar datos tal como están realmente
Una diferencia de texto te indica qué caracteres cambiaron. Una diferencia JSON le indica qué valores cambiaron, y esas son preguntas diferentes, a menudo con respuestas diferentes. Debido a que el orden de los objetos JSON no es significativo, una carga útil que una comparación basada en líneas representa como una reescritura total puede ser estructuralmente idéntica, mientras que un cambio genuino de un único valor anidado puede ocultarse dentro de una línea minimizada muy larga.
Actualizado
Por qué las diferencias de texto fallan en JSON
Tres propiedades de JSON rompen la comparación a nivel de personaje. El orden de las claves no es significativo, por lo que el mismo objeto serializado de dos maneras se ve diferente línea por línea. Los espacios en blanco no son significativos, por lo que un documento con una bonita impresión y su gemelo minimizado parecen completamente diferentes. Y las matrices son posicionales, por lo que una sola inserción desplaza cada línea siguiente y produce una cascada de diferencias falsas que entierra el único cambio real.
Qué comparación estructural informa en su lugar
Una diferencia JSON analiza ambos documentos, recorre los árboles resultantes e informa los cambios por ruta: claves agregadas, claves eliminadas, valores que cambiaron de tipo o contenido y entradas de matriz que se movieron. El resultado se lee como `spec.replicas: 3 → 5` en lugar de veinte líneas de contexto cambiado. Esa es la información que necesita cuando una implementación se comporta de manera diferente y desea saber qué cambió realmente en la configuración.
- spec.template.spec.containers[0].image
+ ghcr.io/acme/web:1.4.2 → ghcr.io/acme/web:1.5.0
- metadata.annotations["deployed-by"] (removed)
Usando una diferencia JSON en el trabajo real
- Versiones API: compare la respuesta v1 y v2 para la misma solicitud y lea el cambio del contrato directamente desde las rutas.
- Instantáneas de prueba fallidas: vea qué campo se desvió en lugar de regenerar la instantánea y esperar.
- Revisión de infraestructura: diferencia un manifiesto renderizado antes y después de una actualización del gráfico.
- Comprobaciones de migración: confirman que una exportación mantuvo cada clave después de un cambio de esquema o base de datos.
El orden es importante para las matrices y no para los objetos: una matriz reordenada es un cambio real, mientras que un objeto reordenado no lo es. Una diferencia estructural conoce la diferencia; una diferencia de texto nunca lo hará.
Detalles prácticos que vale la pena conocer
Ambos documentos deben ser válidos JSON antes de que cualquier comparación sea significativa, por lo que los errores de validación deberían aparecer primero, en líneas y columnas. Esté atento a la deriva del tipo y del valor: `"3"` y `3` parecen casi idénticos, pero rompen a los consumidores que asumen uno u otro. Y cuando un lado está vacío o es un solo objeto mientras el otro es una matriz, eso suele ser una señal de un cambio de forma API en lugar de un cambio de datos. Una diferenciación JSON de dos paneles hace que ambos lados sean visibles a la vez, lo que es más rápido que comparar un archivo con una copia recordada.
Mantenga las cargas útiles locales
Las diferencias son exactamente los documentos que menos desea cargar: respuestas de producción, cargas útiles de facturación, exportaciones con filas de clientes. Compararlos en el navegador significa que el análisis, el recorrido del árbol y la diferencia representada ocurren en su máquina, y la herramienta sigue funcionando con la red desconectada.
JSON Diferencia — preguntas frecuentes
¿El orden de las teclas afecta una diferencia JSON?
No. El orden de las claves de los objetos no es significativo en JSON, por lo que una diferencia estructural trata las claves reordenadas como sin cambios. Si los cambios de orden son significativos para usted, esa es la semántica JSON-con-orden (por ejemplo, un mapa serializado) y, en su lugar, pertenece a una matriz.
¿Cómo comparo dos archivos JSON que no son válidos?
Primero tienen que ser válidos. Ejecute ambos a través de un formateador o validador JSON, corrija la línea y columna informadas y luego compare. Una diferencia sobre una entrada con formato incorrecto produce diferencias que son artefactos del error de sintaxis en lugar de cambios de datos reales.
¿Puede una diferencia JSON mostrar valores que se agregaron o eliminaron?
Sí, esa es la principal ventaja sobre una diferencia de texto. Las rutas agregadas y eliminadas se informan explícitamente, junto con los valores modificados y sus tipos, por lo que una anotación eliminada es tan visible como una etiqueta de imagen modificada.
Herramientas mencionadas en esta publicación.
Más artículos para leer
6 minutos de lectura
Formateador JSON: bonito, minimizado y realmente válido
Un formateador JSON que imprime, minimiza y valida con ubicaciones de error exactas, además de los cinco errores de sintaxis detrás de casi todos los errores JSON no válidos.
6 minutos de lectura
Esquema JSON a JSON: de la carga útil de muestra al contrato
Convierta el esquema JSON en JSON en el navegador: infiera un borrador a partir de una carga útil real, luego refuerce los campos, formatos y enumeraciones requeridos, además de los límites de inferencia.
- Artículo más largo para leer: YAML vs JSON: cuándo usar cuál (y cómo convertir)