Pega las versiones anterior y nueva para comparar su estructura. Los arrays se comparan por índice; revisa los elementos reordenados antes de aplicar el parche.
Se ejecuta localmente en tu navegadorCompare two JSON documents to generate a JSON Patch.
Los arrays se comparan por índice. Revisa los parches cuando haya arrays reordenados o campos de identidad propios del dominio antes de aplicarlos a un documento de producción.
Pega el documento original a la izquierda y la versión editada a la derecha, pulsa Comparar y la página informa de cada valor añadido, eliminado y modificado con su ruta: 7.143 cambios entre dos objetos de 50.000 claves, listados en el orden del recorrido.
El resultado es un JSON Patch (RFC 6902) que convierte el primer documento en el segundo: un array de operaciones add, remove y replace con rutas JSON Pointer. Los dos paneles se analizan y se comparan dentro de la página, así que no se sube nada y la comparación sigue funcionando cuando se cae la red.
El orden de las claves no es una diferencia: {"a":1,"b":2} frente a {"b":2,"a":1} da 0 cambios. Los números se comparan como dobles de JavaScript, por eso 1 y 1.0 son el mismo valor, mientras que 1e2 llega como 100 y aparece como un cambio.
Los tipos nunca se convierten: 1 frente a "1" es un cambio, true frente a 1 también, y una clave con null no es lo mismo que una clave ausente —null en el primer documento y ausente en el segundo da remove /a en lugar de coincidencia—. Las claves duplicadas conservan el último valor, porque el panel se lee con JSON.parse: {"a":1,"a":2} frente a {"a":2} informa de 0 cambios.
La salida no contiene ninguna operación move. Un array se recorre posición a posición, así que reordenar aparece como una serie de replace: [1,2] frente a [2,1] da replace /0 con 2 y replace /1 con 1.
Los cambios de longitud se emiten desde el final: [1,2,3,4] frente a [1,2] elimina primero /3 y después /2, y [1,2] frente a [1,2,3,4] añade /2 y /3. Con ese orden cada operación sigue siendo válida al aplicar el parche de arriba abajo.
Cada ruta es un JSON Pointer conforme a la RFC 6901. Una clave con barra o tilde se escapa: a/b aparece como /a~1b y c~d como /c~0d.
Una clave vacía también recibe puntero —la ruta es /— y el documento raíz tiene la ruta vacía, de modo que sustituirlo entero es una sola operación con path "".
El análisis y la comparación ocurren en la página. Al cargar la herramienta y comparar dos objetos de 50.000 claves no salió ninguna petición más allá de los recursos propios de la página, así que los documentos no salen del navegador; una vez cargada, la herramienta funciona sin conexión.
Se heredan los límites del analizador JSON: los enteros por encima de 2^53 pierden precisión, de modo que 9007199254740993 y 9007199254740992 se consideran idénticos, y un anidamiento de 20.000 niveles se comparó y se parcheó sin error. El tiempo depende del número de cambios: 50.000 claves tardaron medio segundo y dieron un parche de 511 KB, y 500.000 claves unos cinco segundos y 5,25 MB. Revisa el parche antes de aplicarlo a datos de producción.