Informazioni sullo strumento
JSONPath è il modo in cui la maggior parte dei framework di test API estrae valori da una risposta: il JsonPath di REST Assured, gli script di Postman, Karate e molte librerie di asserzioni usano gli stessi concetti. Scrivere l’espressione su una risposta reale ti risparmia un giro di test falliti. Questo tester usa jsonpath-plus con la valutazione degli script disattivata e interpreta le espressioni di filtro come [?(@.price < 10)] con un piccolo interprete integrato, quindi nulla di ciò che incolli viene mai eseguito come codice. Ogni match viene mostrato con il suo percorso normalizzato, che ti dice esattamente da dove proviene il valore.
Come si usa
- Incolla una risposta JSON nel pannello di sinistra, oppure clicca “Load sample” per il classico documento della libreria (bookstore).
- Scrivi un’espressione che inizia con $; i risultati si aggiornano mentre digiti.
- Scegli se mostrare valori, percorsi o entrambi, poi copia il risultato.
- Usa i pulsanti “Try” del cheatsheet per vedere in azione discesa ricorsiva, slice, unioni e filtri.
JSONPath Tester: domande frequenti
Perché la mia espressione funziona qui ma non in REST Assured?
REST Assured usa Groovy GPath, non il JSONPath di Goessner. Il percorso GPath “store.book.findAll { it.price < 10 }.title” equivale qui a “$.store.book[?(@.price < 10)].title”. I percorsi semplici con il punto sono identici in entrambi, ma filtri e wildcard hanno una sintassi diversa.
Quale sintassi di filtro è supportata?
I filtri possono fare riferimento all’elemento corrente (@) o alla radice ($), confrontare con == != < <= > >=, combinare con && || e !, e usare stringhe, numeri, true, false e null. Le script expression come [(@.length-1)] e le chiamate a metodi JavaScript non vengono eseguite di proposito; per l’ultimo elemento usa lo slice [-1:].
Perché non ottengo match anche se la chiave esiste?
Le cause tipiche sono differenze di maiuscole/minuscole (userId vs userid), un [*] mancante quando il valore è dentro un array, oppure una chiave con un trattino o uno spazio che richiede la notazione con parentesi, come $['first-name'].