AZ Tools

Construtor de JSON Patch (RFC 6902)

Desenvolvimento

JSON Patch RFC 6902 é um formato wire para descrever mudanças em um documento JSON — útil para requests PATCH, updates otimistas, histórico de undo e transformações operacionais. Esta ferramenta faz ambas direções: cole source e target JSON, obtenha o patch mínimo que converte um no outro; ou cole source e um patch, veja o resultado após aplicar. O diff usa comparação estrutural recursiva com escape JSON Pointer `~0`/`~1` para chaves com slashes ou tildes. O lado apply respeita as seis ops incluindo `test` (assertion falha lança erro), `copy` e `move`. Útil para testar patches antes de bater no seu servidor, ou descobrir as ops certas por exemplo.

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"
  }
]

RFC 6902 puro — suporta ops add, remove, replace, move, copy, test com escape pointer `~0`/`~1`.

Como usar

  1. Modo Diff: cole source e target, veja o patch JSON. Edite qualquer lado para ver como o patch muda.
  2. Modo Apply: cole source e um array de patch, veja o documento resultante. Erros (pointer ruim, `test` falhado) aparecem inline.
  3. Sintaxe JSON Pointer: `/foo/0/bar` caminha `foo.0.bar`. Escape `/` como `~1`, `~` como `~0`. Trailing `-` em path de array significa 'append'.

Perguntas frequentes

Por que não só enviar o novo documento?
Largura de banda por um. Concorrência por dois: se Alice e Bob ambos editam um doc, você pode mesclar seus patches semanticamente (`replace /name` é compatível com `add /tags/-`), enquanto dois docs completos teriam que escolher um vencedor. Além disso, patches são um trilho de auditoria preciso de o que mudou e quando.
É o mesmo que JSON Merge Patch (RFC 7396)?
Não. Merge Patch é mais simples — você envia um documento parcial onde chaves presentes sobrescrevem e `null` deleta. É mais fácil para humanos mas perde precisão (não pode adicionar a array, não pode representar valores `null` literais, sem teste atômico). RFC 6902 (esta ferramenta) é o formato wire preciso. RFC 7396 é o formato de conveniência.

Ferramentas relacionadas