Tester JSONPath

Incolla un documento JSON e digita un’espressione JSONPath come $..book[?(@.price<10)]. Il tester la valuta rispetto al documento e mostra ogni valore corrispondente, con il percorso esatto di ogni corrispondenza. Utile per convalidare la query che stai per incollare in uno script o in una specifica API (Postman, k6, JMeter parlano tutti JSONPath).

Come testare un'espressione JSONPath

  1. 1

    Incolla il documento JSON

    Qualsiasi JSON valido, oggetto, array, profondamente annidato.

  2. 2

    Digita l'espressione

    Inizia con `$` per la radice. Usa `.` per il figlio, `..` per la discesa ricorsiva, `[*]` per il jolly.

  3. 3

    Guarda le corrispondenze in tempo reale

    Ogni corrispondenza è mostrata con il suo valore e il JSONPath completo, evidenziato nel documento originale.

  4. 4

    Copia i risultati

    Copia le corrispondenze come un array JSON, oppure copia ciascun percorso individuale per l'uso nel codice a valle.

Riferimento alla sintassi JSONPath

Espressione Significato
$ Elemento radice
$.store Figlio di $ chiamato store
$["store"] Stesso, forma con parentesi
$..author Tutte le proprietà author a qualsiasi profondità
$.store.book[*] Ogni libro nel negozio
$.store.book[0] Primo libro
$.store.book[-1:] Ultimo libro
$.store.book[0:2] Primi due libri (slicing)
$.store.book[?(@.isbn)] Libri con una proprietà isbn
$.store.book[?(@.price < 10)] Libri più economici di 10
$.store.book[?(@.category == "fiction")] Libri di narrativa
$..* Ogni valore, ovunque

Espressioni di filtro

Le espressioni di filtro usano @ per riferirsi al nodo corrente. Il tester supporta gli operatori comuni ==, !=, <, >, <=, >=, &&, ||, e regex =~.

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

Dialetti JSONPath

Ci sono diverse implementazioni di JSONPath con piccole incompatibilità. Questo tester segue la specifica originale di Goessner e i miglioramenti RFC 9535, che sono compatibili con:

  • Jayway JsonPath (Java)
  • jsonpath-plus (JavaScript)
  • jsonpath-rw (Python)
  • jq espressioni di percorso di base

Le funzionalità incompatibili (come le espressioni di script con JS arbitrario) sono segnalate nel pannello degli errori.

Quando JSONPath supera un parser completo

  • Test di asserzioni: pm.expect(jsonData).to.have.jsonPath(...) di Postman richiede un percorso.
  • Estrazione di configurazione: estrai un valore da una grande risposta API senza una libreria.
  • Script di carico: k6, JMeter e Gatling supportano tutti JSONPath per i controlli.
  • Kubernetes / AWS CLI: i flag --query e --jsonpath ti permettono di modellare l’output dalla riga di comando.

Errori comuni

  • Usare . su un array. $.users.0.name è sbagliato; usa $.users[0].name.
  • Dimenticare .. per la profondità. Un percorso come $.name corrisponde solo al name di primo livello; usa $..name per tutti.
  • Confondere JSONPath con jq. jq è un superset con flusso di controllo e trasformazioni; JSONPath è puramente per l’estrazione.
  • Ancoraggio regex. =~ /foo/ corrisponde a sottostringhe; usa /^foo$/ per un comportamento di corrispondenza esatta.

Domande frequenti

JSONPath è un linguaggio di estrazione puro, seleziona, filtra, affetta. jq è un linguaggio completo di query / trasformazione con flusso di controllo, variabili e funzioni. Per un’estrazione semplice, JSONPath è più portatile; per trasformazioni, usa jq.

La specifica originale di Goessner più i miglioramenti RFC 9535, che corrispondono a Jayway JsonPath (Java) e jsonpath-plus (Node). Le estensioni specifiche del dialetto (espressioni di script con codice arbitrario) non sono supportate.

Sì. $..book[?(@.title =~ /^Harry.*/)] corrisponde a tutti i libri il cui titolo inizia con “Harry”. Usa ^ e $ per un comportamento di corrispondenza completa.

Sì. Sia il JSON che il valutatore JSONPath vivono nel tuo browser. Il tuo documento e le tue query non lasciano mai la scheda.

Strumenti correlati

Strumento disponibile in altre lingue