Cosa fa
JSONPath è un linguaggio di interrogazione per JSON, simile a ciò che XPath è per XML. Una query come $.store.book[*].title percorre un documento e seleziona i valori che ti interessano. Questo valutatore esegue un’espressione JSONPath sul JSON incollato ed elenca ogni corrispondenza in un array JSON: i valori trovati, i loro percorsi normalizzati (per esempio $['store']['book'][0]['title']) oppure entrambi.
Segue la RFC 9535, lo standard IETF pubblicato nel 2024, quindi i risultati coincidono con le librerie moderne per JavaScript, Java, Python, Go e altri linguaggi. Usalo per provare una query prima di metterla nel codice, per capire perché un filtro non restituisce nulla o per estrarre pochi campi da una grande risposta API.
Come si usa
- Incolla il JSON nel riquadro JSON, carica un file
.jsonoppure fai clic su Esempio per caricare il classico documento della libreria. - Scrivi una query in Espressione JSONPath. Le corrispondenze si aggiornano mentre digiti.
- Scegli cosa Mostra: valori, percorsi o coppie percorso/valore.
- Copia o scarica il risultato. In caso di errore di sintassi viene indicato il carattere in cui l’analisi si è fermata.
Promemoria della sintassi
| Espressione | Significato |
|---|---|
$ | La radice del documento |
.name o ['name'] | Un membro di un oggetto |
[0], [-1] | Un elemento di array (i negativi contano dalla fine) |
[1:3], [::2] | Una slice: inizio, fine (esclusa) e passo |
* | Tutti i membri o gli elementi |
..name | name a qualsiasi profondità |
[?@.price < 10] | I figli per cui il filtro è vero; @ è l’elemento corrente |
I filtri possono combinare condizioni con &&, || e !, confrontare altre parti del documento tramite $ e chiamare funzioni: length(@.tags) > 2, count(@.items[*]) == 0, match(@.code, '[A-Z]{3}') perché l’intera stringa corrisponda all’espressione regolare e search(@.title, 'Ring') per una corrispondenza in qualsiasi punto.
Esempio
Con la libreria di esempio, questa query seleziona i titoli dei libri che costano meno di 10:
$.store.book[?@.price < 10].title
e restituisce:
["Sayings of the Century", "Moby Dick"]
Cambiala in $..book[?@.isbn].author per elencare gli autori dei libri con ISBN, oppure in $..price per raccogliere tutti i prezzi del negozio, compreso quello della bicicletta.
Domande frequenti
› Quale sintassi JSONPath è supportata?
La sintassi standard della RFC 9535: nomi dei membri con punto e parentesi quadre, caratteri jolly, indici di array (anche negativi), slice, ricerca a qualsiasi profondità con .., filtri con confronti e && || !, e le funzioni length(), count(), match(), search() e value(). Anche la vecchia forma ?(@.price < 10) funziona, perché le parentesi servono solo a raggruppare.
› Perché la mia query restituisce un array vuoto?
Un array vuoto significa che la query è valida ma non ha trovato nulla. Controlla i nomi dei membri (distinguono maiuscole e minuscole) e se un valore è un array o un oggetto. Con una query ampia come $..* e Mostra impostato su Percorsi vedi cosa contiene il documento.
› Posso usare espressioni script come [(@.length-1)]?
No. Le espressioni script eseguono codice arbitrario e non fanno parte dello standard. Usa un indice negativo: [-1] è l’ultimo elemento e [-2:] gli ultimi due.
› Il mio JSON viene inviato a un server?
No. La query viene analizzata e valutata nel tuo browser dal codice della pagina; non viene caricato nulla.