AZ Tools

Resolvedor de JSON Pointer (RFC 6901)

Desenvolvimento

Um JSON Pointer é a forma padrão (RFC 6901) de endereçar um único valor dentro de um documento JSON com um caminho separado por barras como /user/roles/0. É o que $ref do JSON Schema, JSON Patch, JSON Merge Patch e muitas ferramentas OpenAPI usam por baixo. Cole um documento e um ponteiro para ver exatamente qual valor ele seleciona, formatado. O resolvedor implementa a especificação com precisão: o ponteiro vazio retorna o documento inteiro, ~1 significa uma barra literal e ~0 um til literal (então uma chave como "a/b" é alcançada com /a~1b), índices de array devem ser 0 ou inteiros sem sinal sem zeros à esquerda, e o token especial "-" não tem valor na leitura. Ponteiros de fragmento URI (#/user/roles/0) são aceitos e decodificados por porcentagem. Também lista cada ponteiro do seu documento com uma prévia do valor, para você clicar e descobrir o caminho exato até qualquer nó. Tudo roda localmente; nada é enviado.

Valor resolvido

"admin"

Ponteiros neste documento (clique para usar)

(raiz){…} (3)
/user{…} (3)
/user/id42
/user/name"Ada"
/user/roles[…] (2)
/user/roles/0"admin"
/user/roles/1"editor"
/a~1b"slash in key"
/settings{…} (2)
/settings/theme"dark"
/settings/limits{…} (1)
/settings/limits/max100

Ponteiro vazio = documento inteiro. Escape / em uma chave como ~1 e ~ como ~0. Fragmentos URI como #/a/b são aceitos.

Como usar

  1. Cole ou edite o documento JSON.
  2. Digite um JSON Pointer (ex.: /user/name, ou #/settings/limits/max), ou clique em uma linha da lista de ponteiros.
  3. Leia o valor resolvido; escape uma barra em uma chave como ~1 e um til como ~0.

Perguntas frequentes

Como um JSON Pointer difere do JSONPath?
JSON Pointer (RFC 6901) endereça exatamente um valor com um caminho simples separado por barras e é usado por JSON Schema, JSON Patch e OpenAPI. JSONPath é uma linguagem de consulta que pode casar muitos valores com curingas, filtros e descida recursiva. Use esta ferramenta para o primeiro; o testador JSONPath para o segundo.
O que são ~0 e ~1?
Como / separa tokens e ~ é o caractere de escape, uma / literal dentro de uma chave é escrita ~1 e um ~ literal é escrito ~0. Assim o membro "a/b" é alcançado com /a~1b, e "m~n" com /m~0n. Ao desescapar, ~1 é substituído antes de ~0, exatamente como o RFC exige.
O que o ponteiro vazio retorna?
Uma string vazia é um ponteiro válido que se refere ao documento inteiro, então retorna o valor JSON completo. Note que "/" não é vazio — é um ponteiro com um token de string vazia, que seleciona o membro cuja chave é a string vazia.
Por que meu ponteiro não resolveu?
Razões comuns: o membro ou índice de array não existe, um índice de array tem um zero à esquerda (apenas 0, 1, 2… sem preenchimento são válidos), você usou "-" (que não tem valor na leitura), ou um ponteiro não vazio não começou com /. A mensagem de erro nomeia o token exato que falhou.

Ferramentas relacionadas