DevToolPal
IT

Valutatore JSONPath

Esegui una query JSONPath su un JSON e visualizza ogni valore corrispondente con il suo percorso, con filtri e funzioni (RFC 9535).

Eseguito in locale, mai caricato

Opzioni

Mostra

JSON

0 caratteri · 0 B

Corrispondenze

0 caratteri · 0 B

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

  1. Incolla il JSON nel riquadro JSON, carica un file .json oppure fai clic su Esempio per caricare il classico documento della libreria.
  2. Scrivi una query in Espressione JSONPath. Le corrispondenze si aggiornano mentre digiti.
  3. Scegli cosa Mostra: valori, percorsi o coppie percorso/valore.
  4. Copia o scarica il risultato. In caso di errore di sintassi viene indicato il carattere in cui l’analisi si è fermata.

Promemoria della sintassi

EspressioneSignificato
$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
..namename 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.