Generador de JSON Patch
Compara dos documentos JSON y obtén el patch del RFC 6902 que convierte el primero en el segundo. Todo funciona en tu navegador.
Qué hace esta herramienta
Compara dos documentos JSON y escribe la lista de operaciones que convierte el primero en el segundo, en el formato que define el RFC 6902. En lugar de enviar un documento entero para decir que ha cambiado un campo, envías el cambio en sí.
Cuándo usarla
Úsala para construir el cuerpo de una petición PATCH, para registrar qué ha cambiado entre dos versiones de un archivo de configuración o para guardar un rastro de auditoría mucho más pequeño que conservar cada copia completa. También es una forma rápida de averiguar qué difiere de verdad entre dos documentos que parecen iguales.
Las operaciones que genera
| Operación | Qué significa |
|---|---|
| add | Añade un valor donde no había ninguno, o inserta en un array. |
| remove | Borra el valor de esa ubicación. |
| replace | Sobrescribe el valor de una ubicación que ya existe. |
| move | Mueve un valor de una ubicación a otra. |
| copy | Copia un valor a otra ubicación. |
| test | Comprueba un valor y aborta todo el patch si no coincide. |
Esta herramienta escribe solo add, remove y replace. Esas tres pueden expresar cualquier cambio, y un patch que se lee línea a línea vale más que uno más corto que cuesta descifrar. Las otras tres forman parte del RFC 6902 y cualquier servidor conforme las acepta.
Cómo funcionan las rutas
Cada ruta es un JSON Pointer (RFC 6901): un camino separado por barras desde la raíz del documento, donde “/address/zipCode” significa el campo zipCode dentro de address. Las posiciones de un array son números, así que “/skills/0” es el primer elemento, y un guion significa el final del array: “/skills/-” añade al final. Como la barra es el separador, una clave que contenga una se escribe como ~1, y una tilde literal como ~0.
Notas sobre el resultado
La comparación es literal: compara valor por valor, posición por posición, así que insertar un elemento al principio de un array produce un replace en todos los siguientes en lugar de una sola inserción. Para arrays de objetos con identificadores estables, un patch generado a partir de los identificadores siempre será más pequeño que uno generado a partir de las posiciones.
Cómo generar un JSON Patch
Pega dos documentos JSON y genera el patch.
- Pega el JSON original a la izquierda.
- Pega el JSON actualizado a la derecha.
- Pulsa Generar y copia el patch.
Preguntas frecuentes
¿Esta herramienta envía mis datos a algún sitio?
No. Los dos documentos se quedan en tu navegador y el patch se genera en tu propia máquina.
¿El resultado cumple el RFC 6902?
Sí. Cada operación es un objeto con op, path y — para add y replace — value, y las rutas son JSON Pointers tal como los define el RFC 6901.
¿Incluye operaciones move y copy?
No. Escribe add, remove y replace, que bastan para expresar cualquier cambio y son mucho más fáciles de leer. Un move es simplemente un remove seguido de un add.
¿Cómo aplico el patch?
Envíalo a una API que acepte application/json-patch+json, o usa una biblioteca: jsonpatch en Python, json-patch en JavaScript, JsonPatchDocument en .NET, json-patch en Java, y así sucesivamente.
¿Qué diferencia hay con JSON Merge Patch?
JSON Merge Patch (RFC 7386) se parece al propio documento, y null significa “borrar”. Eso lo hace fácil de leer, pero incapaz de guardar un null de verdad o de tocar un solo elemento de un array. JSON Patch es más verboso y puede expresar cualquier cosa.
Wikipedia — JSON Patch
Wikipedia — JSON
Wikipedia — Patch (computing)
Wikipedia — Diff
Wikipedia — REST