Construtor de JSON Patch (RFC 6902)
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.
[
{
"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
- Modo Diff: cole source e target, veja o patch JSON. Edite qualquer lado para ver como o patch muda.
- Modo Apply: cole source e um array de patch, veja o documento resultante. Erros (pointer ruim, `test` falhado) aparecem inline.
- 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
Resolvedor de JSON Pointer (RFC 6901)
Resolva um JSON Pointer RFC 6901 como /user/roles/0 contra um documento JSON, com escape ~0/~1 e suporte a fragmento URI (#/…) — além de uma lista clicável de cada ponteiro do documento, no seu navegador.
Visualizador de Diferenças de JSON
Compare dois documentos JSON estruturalmente — veja exatamente quais chaves foram adicionadas, removidas ou alteradas.
Ferramentas Semver (Parser, Comparador, Bump)
Faz parse, compara e incrementa versões semânticas lado a lado, com um expansor de range que mostra o que ^x.y.z e ~x.y.z realmente cobrem.
Construtor de Manifest PWA
Construa um `manifest.json` válido para Progressive Web App — name, icons, theme color, display mode, scope, orientation — com o HTML `<link>` e meta tags Apple correspondentes.
Codificador e Decodificador Quoted-Printable
Codifique texto para MIME Quoted-Printable (RFC 2045) ou decodifique — com escapes =XX, quebras de linha suaves e UTF-8 — tudo no seu navegador, com quebra de linha em 76 caracteres ao codificar.
Conversor de JWK para PEM (e vice-versa)
Converta um JWK ou um JWKS inteiro em chaves públicas PEM e ao contrário, com a impressão digital RFC 7638 de cada chave — no navegador.