AZ Tools

Constructor de JSON Patch (RFC 6902)

Desarrollo

JSON Patch RFC 6902 es un formato wire para describir cambios a un documento JSON — útil para requests PATCH, updates optimistas, historial de undo y transformaciones operacionales. Esta herramienta hace ambas direcciones: pega un JSON source y target, obtén el patch mínimo que convierte uno al otro; o pega un source y un patch, ve el resultado después de aplicar. El diff usa comparación estructural recursiva con escapado JSON Pointer `~0`/`~1` para claves con slashes o tildes. El lado apply respeta las seis ops incluyendo `test` (assertion fallida lanza error), `copy` y `move`. Útil para probar patches antes de pegarle a tu servidor, o resolver las ops correctas por ejemplo.

Patch (RFC 6902)
[
  {
    "op": "replace",
    "path": "/age",
    "value": 31
  },
  {
    "op": "replace",
    "path": "/address/city",
    "value": "Busan"
  },
  {
    "op": "remove",
    "path": "/address/zip"
  },
  {
    "op": "add",
    "path": "/address/country",
    "value": "KR"
  },
  {
    "op": "replace",
    "path": "/tags/1",
    "value": "owner"
  },
  {
    "op": "add",
    "path": "/tags/2",
    "value": "user"
  }
]

Puro RFC 6902 — soporta ops add, remove, replace, move, copy, test con escapado pointer `~0`/`~1`.

Cómo usar

  1. Modo Diff: pega source y target, ve el patch JSON. Edita cualquier lado para ver cómo cambia el patch.
  2. Modo Apply: pega source y un array de patch, ve el documento resultante. Errores (pointer malo, `test` fallido) se muestran inline.
  3. Sintaxis JSON Pointer: `/foo/0/bar` camina `foo.0.bar`. Escapa `/` como `~1`, `~` como `~0`. Trailing `-` en un path de array significa 'append'.

Preguntas frecuentes

¿Por qué no solo enviar el nuevo documento?
Ancho de banda por uno. Concurrencia por dos: si Alice y Bob ambos editan un doc, puedes mergear sus patches semánticamente (`replace /name` es compatible con `add /tags/-`), mientras que dos docs completos tendrían que elegir un ganador. Además, los patches son un rastro de auditoría preciso de qué cambió y cuándo.
¿Es lo mismo que JSON Merge Patch (RFC 7396)?
No. Merge Patch es más simple — envías un documento parcial donde las claves presentes sobrescriben y `null` borra. Es más fácil para humanos pero pierde precisión (no puedes añadir a un array, no puedes representar valores `null` literales, no hay test atómico). RFC 6902 (esta herramienta) es el formato wire preciso. RFC 7396 es el formato de conveniencia.

Herramientas relacionadas