Avaliador de JSON Pointer (RFC 6901) | Valor resolvido e motivo exato do erro
Avalia um JSON Pointer (RFC 6901) sobre qualquer documento JSON e mostra a resolução token a token. Decodifica os escapes ~0 e ~1, valida índices de array e informa o motivo preciso quando um ponteiro não resolve.
💡 Sobre esta ferramenta
Um JSON Pointer é uma cadeia como /users/0/name que aponta para uma única posição dentro de um documento JSON. Eles aparecem em todo lugar assim que você trabalha com APIs: operações de JSON Patch (RFC 6902), $ref em JSON Schema e OpenAPI, e os ponteiros de erro das respostas JSON:API. A sintaxe parece simples até que uma chave contenha uma barra ou um til: então a/b precisa ser escrito como /meta/a~1b e c~d vira /meta/c~0d, e é surpreendentemente fácil errar ao expandir o escape de cabeça.
Esta ferramenta divide o ponteiro por /, desfaz o escape de cada token (~1 → /, depois ~0 → ~) e percorre o documento passo a passo. O caminho de resolução mostra até onde o percurso chegou: quando um ponteiro falha, você vê se foi por um membro inexistente, um índice fora do intervalo ou um token que tentou descer em um valor escalar. O ponteiro vazio retorna a raiz inteira do documento, conforme a especificação.
🧐 Perguntas frequentes
Q. Qual a diferença entre ~0 e ~1?
A. ~1 representa uma barra / e ~0 um til ~. A ordem é fixada pela especificação: primeiro substitui-se ~1 e depois ~0. Fazer ao contrário corromperia sequências como ~01, por isso a ferramenta sempre aplica ~1 antes de ~0.
Q. Como referencio um elemento de array?
A. Com um inteiro de base zero, por exemplo /users/0. Zeros à esquerda como 00 ou 01 são inválidos. Um índice fora do intervalo do array (igual ou maior que seu tamanho) retorna "Não encontrado", e o caminho destaca o token onde o percurso parou.
Q. Por que um - final falha?
A. - é o token reservado para "a posição após o último elemento". O JSON Patch o usa para anexar ao fim, mas como referência de leitura ele não aponta para nenhum valor, então a ferramenta o marca sem valor.
Q. Posso apontar para um membro cuja chave é a string vazia?
A. Sim. Em {"": 1} o valor é referenciado por / (uma única barra). É diferente do ponteiro vazio (nada), que aponta para toda a raiz.
Q. Meus dados saem do navegador? A. Não: a análise e o percurso rodam inteiramente no seu navegador, então você pode colar payloads internos sem que sejam enviados a lugar algum.
📚 Por que JSON Pointer existe
Vale entender o lugar do JSON Pointer no ecossistema. Padronizado em 2013 como RFC 6901, ele nasceu junto com o JSON Patch (RFC 6902) para resolver um problema concreto: descrever de forma inequívoca uma posição dentro de um JSON. Antes disso, cada biblioteca inventava sua própria notação de caminho, e um patch escrito para uma ferramenta quebrava em outra.
A escolha de manter o JSON Pointer minimalista — sem predicados, sem curingas, apenas chaves e índices literais — é o que permite embuti-lo em um fragmento de URI. O #/components/schemas/User que você vê no OpenAPI não é notação exclusiva do OpenAPI: tudo após o # é um JSON Pointer interpretado como fragmento. Essa mesma gramática aponta para um documento local, um arquivo remoto ou uma resposta HTTP, o que explica por que tantas ferramentas REST a adotaram em vez de criar mais um formato de caminho.