search

Found

info Visão geral

Avalia um JSON Pointer (RFC 6901) como /users/0/name, decodifica os escapes ~0 e ~1 e rastreia cada token com o valor resolvido ou o motivo exato do erro.

📘 Como usar

  1. Cole o documento JSON que deseja consultar no campo superior
  2. Digite um JSON Pointer como /users/0/name
  3. Confira o status, o valor resolvido e o caminho de resolução token a token

Avaliador de JSON Pointer (RFC 6901)

Texto JSON válido conforme RFC 8259. Aceita objetos, arrays e estruturas aninhadas.

Sintaxe RFC 6901. Exemplos: vazio (raiz), /users/0/name, /meta/a~1b (chave a/b), /meta/c~0d (chave c~d).

Status
 
Copiado!

※ ~0 → ~, ~1 → /. Índices de array devem ser inteiros não negativos. O hífen final - aponta para a posição após o último elemento e não tem valor.

※ Em conformidade com RFC 6901 (2013). Ponteiros são separados por /; o ponteiro vazio ('') retorna a raiz do documento.

Article

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.