Testador de JSONPath

Cole um documento JSON e digite uma expressão JSONPath como $..book[?(@.price<10)]. O testador avalia isso contra o documento e mostra cada valor correspondente, com o caminho exato de cada correspondência. Útil para validar a consulta que você está prestes a colar em um script ou em uma especificação de API (Postman, k6, JMeter todos falam JSONPath).

Como testar uma expressão JSONPath

  1. 1

    Cole o documento JSON

    Qualquer JSON válido, objeto, array, profundamente aninhado.

  2. 2

    Digite a expressão

    Comece com `$` para a raiz. Use `.` para filho, `..` para descida recursiva, `[*]` para curinga.

  3. 3

    Veja as correspondências ao vivo

    Cada correspondência é mostrada com seu valor e JSONPath completo, destacado no documento original.

  4. 4

    Copie os resultados

    Copie correspondências como um array JSON, ou copie cada caminho individual para uso em código subsequente.

Referência de sintaxe JSONPath

Expressão Significado
$ Elemento raiz
$.store Filho de $ chamado store
$["store"] O mesmo, forma de colchetes
$..author Todas as propriedades author em qualquer profundidade
$.store.book[*] Cada livro na loja
$.store.book[0] Primeiro livro
$.store.book[-1:] Último livro
$.store.book[0:2] Dois primeiros livros (fatiamento)
$.store.book[?(@.isbn)] Livros com uma propriedade isbn
$.store.book[?(@.price < 10)] Livros mais baratos que 10
$.store.book[?(@.category == "fiction")] Livros de ficção
$..* Cada valor, em qualquer lugar

Expressões de filtro

Expressões de filtro usam @ para se referir ao nó atual. O testador suporta os operadores comuns ==, !=, <, >, <=, >=, &&, ||, e regex =~.

$.items[?(@.qty >= 10 && @.price < 50)]

Dialetos JSONPath

Existem várias implementações de JSONPath com pequenas incompatibilidades. Este testador segue a especificação original de Goessner e os refinamentos da RFC 9535, que são compatíveis com:

  • Jayway JsonPath (Java)
  • jsonpath-plus (JavaScript)
  • jsonpath-rw (Python)
  • expressões de caminho básicas jq

Recursos incompatíveis (como expressões de script com JS arbitrário) são sinalizados no painel de erro.

Quando JSONPath supera um parser completo

  • Asserções de teste: o pm.expect(jsonData).to.have.jsonPath(...) do Postman aceita um caminho.
  • Extração de configuração: extraia um valor de uma enorme resposta de API sem uma biblioteca.
  • Scripts de teste de carga: k6, JMeter e Gatling todos suportam JSONPath para verificações.
  • Kubernetes / AWS CLI: as flags --query e --jsonpath permitem que você molde a saída a partir da linha de comando.

Erros comuns

  • Usando . em um array. $.users.0.name está errado; use $.users[0].name.
  • Esquecendo .. para profundidade. Um caminho como $.name só corresponde ao name de nível superior; use $..name para todos.
  • Confundindo JSONPath com jq. jq é um superconjunto com controle de fluxo e transformações; JSONPath é puramente para extração.
  • Ancoragem de regex. =~ /foo/ corresponde a substrings; use /^foo$/ para comportamento de correspondência exata.

Perguntas frequentes

JSONPath é uma linguagem de extração pura, selecionar, filtrar, fatiar. jq é uma linguagem completa de consulta / transformação com controle de fluxo, variáveis e funções. Para extração simples, JSONPath é mais portátil; para transformações, use jq.

A especificação original de Goessner mais os refinamentos da RFC 9535, correspondendo ao Jayway JsonPath (Java) e jsonpath-plus (Node). Extensões específicas de dialeto (expressões de script com código arbitrário) não são suportadas.

Sim. $..book[?(@.title =~ /^Harry.*/)] corresponde a todos os livros cujo título começa com “Harry”. Use ^ e $ para comportamento de correspondência completa.

Sim. Tanto o JSON quanto o avaliador JSONPath vivem no seu navegador. Seu documento e consultas nunca saem da aba.

Ferramentas relacionadas

Ferramenta disponível em outros idiomas