Execute consultas JSONPath RFC 9535 em JSON colado e veja cada correspondência destacada
Funciona no seu navegador. Nada do que você digita é enviado a lugar nenhum.O JSONPath tira valores de um JSON com uma expressão curta. $.store.book[*].author retorna todos os autores, $..price todos os preços em qualquer profundidade e $..book[[email protected] < 10] só os livros abaixo de 10. Este testador segue a RFC 9535, o padrão de 2024, e destaca cada correspondência no JSON formatado.
Esta página foi traduzida automaticamente do original em inglês. Nenhuma pessoa revisou ainda a tradução; a versão em inglês é a que deve ser considerada. Ler o original em inglês
Cole o JSON no painel JSON, ou clique em Ver um exemplo.
Digite uma consulta na caixa JSONPath, ou escolha uma em Exemplos.
Veja as correspondências marcadas na aba Destacado, ou abra Resultados para ver cada caminho e valor.
Clique em Copiar valores para ter as correspondências como array JSON, ou em Copiar caminhos.
Este testador de JSONPath roda uma consulta no JSON que você cola e mostra o resultado de três formas: uma lista dos valores correspondentes, o caminho normalizado de cada correspondência e o destaque das correspondências dentro do documento formatado. O resultado se atualiza enquanto você digita, então dá para montar uma expressão passo a passo e ver onde ela erra.
O motor implementa a RFC 9535, o padrão JSONPath publicado pelo IETF em 2024. Ele suporta a raiz $, acesso a filhos por ponto e por colchetes, o operador de descida recursiva .., curingas, índices de array inclusive negativos, slices como [1:5:2] e [::-1], e expressões de filtro com ==, !=, <, <=, >, >=, &&, || e !. As cinco funções padrão estão incluídas: length(), count(), value(), match() e search(), sendo que as duas últimas aceitam expressões regulares no formato I-Regexp. Consultas que quebram as regras de tipos do padrão, como comparar uma consulta que pode retornar vários nós, são recusadas com uma mensagem explicando o motivo.
Muitas bibliotecas antigas, como o JSONPath original de 2007 e o Jayway para Java, diferem do padrão em detalhes: algumas exigem parênteses em volta dos filtros, como em [?(@.price < 10)], o que aqui continua funcionando; outras permitem expressões de script ou funções extras, que a RFC 9535 não prevê. Se uma consulta tirada da documentação de uma biblioteca for recusada, a mensagem costuma apontar a diferença.
JSON inválido é indicado com a linha e a coluna do primeiro problema. Os números são lidos como números JavaScript, então inteiros maiores que 2^53 perdem precisão, e uma chave repetida fica com o último valor.
O que ele não faz: sintaxe JMESPath ou jq, editar o JSON ou buscar uma URL. Tudo roda no seu navegador. Ferramentas relacionadas: JSON Formatter, JSON Diff, JSON to TypeScript.
Use um seletor de filtro: $.items[[email protected] == 'active'] mantém os itens cujo status é active. O @ representa cada item, um de cada vez. Combine condições com && e ||, compare números com < e >, e escreva [email protected] sozinho para manter os itens que têm um campo email.
Um ponto só pega um filho do nó atual, então $.store.book lê um nível por vez. Dois pontos buscam em qualquer profundidade, então $..price acha todos os campos price do documento, inclusive dentro de arrays. A descida recursiva é prática, mas em respostas grandes pode pegar mais do que o esperado.
A RFC 9535, publicada pelo IETF em fevereiro de 2024, o primeiro padrão formal de JSONPath. Consultas escritas para bibliotecas antigas geralmente funcionam, inclusive filtros entre ?( ), mas expressões de script e funções próprias de cada biblioteca não fazem parte do padrão e são recusadas com uma explicação.
Use um índice negativo: $.items[-1] é o último elemento e $.items[-2] o anterior. Um slice com início negativo também funciona, então $.items[-3:] retorna os três últimos. Índices além do fim simplesmente não retornam nada, em vez de dar erro.
Um caminho normalizado é a localização exata e única de uma correspondência, escrita em uma forma fixa definida pela RFC 9535, como $['store']['book'][0]['title']. Cada resultado mostra seu caminho normalizado, útil para apontar um valor em um relatório de bug ou em uma asserção de teste.
Sim, com match() e search(). match(@.code, 'A[0-9]+') exige que a string inteira se encaixe no padrão, enquanto search(@.name, 'smith') o encontra em qualquer parte. Os padrões usam I-Regexp, um subconjunto portátil de expressões regulares, então atalhos como \d e lookaheads não são aceitos.
Ainda com dúvidas? Pergunte sobre Testador de JSONPath e qualquer pessoa que saiba pode responder. Não é preciso ter conta.