Tester JSONPath
Prova espressioni JSONPath sul tuo JSON nel browser. Filtri, slice, discesa ricorsiva, percorsi e JSON Pointer, con esempi pronti all'uso.
Come provare un’espressione JSONPath
- Incolla il tuo JSON in Dati JSON, oppure clicca su Carica i dati di esempio per usare il classico esempio della libreria (bookstore).
- Scrivi un’espressione in Espressione JSONPath, oppure scegline una dagli Esempi.
- Il risultato si aggiorna mentre scrivi; Esegui la query la rilancia. La riga di stato indica il numero di corrispondenze.
- Usa Mostra per passare tra Valori, Percorsi, JSON Pointer e Percorsi e valori, poi copia il risultato.
La sintassi JSONPath in breve
| Sintassi | Significato | Esempio |
|---|---|---|
$ |
la radice del documento | $ |
.nome o ['nome'] |
un figlio | $.store.bicycle |
* |
ogni figlio | $.store.* |
.. |
discesa ricorsiva, a qualsiasi profondità | $..author |
[n] |
indice di array, a partire da 0 | $..book[2] |
[inizio:fine:passo] |
slice; i numeri negativi contano dalla fine | $..book[-1:] |
[a,b] |
unione | $..book[0,1] |
[?(expr)] |
filtro | $..book[?(@.price < 10)] |
^ |
il genitore di ogni corrispondenza | $..book[?(@.price > 20)]^ |
~ |
il nome della proprietà invece del valore | $.store.*~ |
I risultati vengono restituiti nell’ordine del documento. Percorsi dà percorsi normalizzati come $['store']['book'][0]['title'], e JSON Pointer dà la forma RFC 6901 /store/book/0/title, comoda per JSON Patch o per i percorsi di errore dei validatori JSON Schema.
Espressioni di filtro: cosa è supportato
I filtri vengono valutati con jsonpath-plus in modalità sicura: l’espressione viene analizzata e interpretata da un piccolo valutatore, mai passata a eval o a new Function. Dentro [?( … )] puoi usare:
@per l’elemento corrente,@.campoe@['campo']per i suoi membri,@rootper l’intero documento ($non è disponibile dentro un filtro);- i confronti
==,!=,===,!==,<,<=,>,>=; - la logica
&&,||,!, l’aritmetica+ - * / %e il ternarioa ? b : c; - letterali di stringa, numero,
true,false,nulled espressioni regolari; - i metodi dei valori stessi, per esempio
@.title.startsWith('S'),@.tags.includes('new')o@.title.match(/lord/i); @property(la chiave o l’indice dell’elemento corrente),@parente@path(il suo percorso normalizzato), nello stile di jsonpath-plus.
L’accesso a constructor, __proto__ e al costruttore Function è bloccato. Se un filtro fallisce su un elemento, per esempio @.isbn.startsWith('0') su un libro senza isbn, quell’elemento semplicemente non corrisponde; un errore di sintassi nell’espressione viene invece segnalato. I filtri scritti alla maniera della RFC 9535, [?@.price < 10] senza parentesi, sono accettati e letti come [?(@.price < 10)]. Le funzioni della RFC 9535 come length(), count(), match() e search() non sono disponibili: usa invece metodi JavaScript come @.name.length.
Anche i selettori di tipo di jsonpath-plus funzionano alla fine di un percorso: $..*@number() restituisce tutti i numeri, e @string(), @boolean(), @array(), @object(), @null() e @integer() fanno lo stesso per gli altri tipi.
Domande frequenti
Il mio JSON viene inviato a un server?
No. Lettura e valutazione avvengono nel tuo browser, e i tuoi dati non lasciano mai il tuo computer.
Perché il mio filtro non restituisce nulla?
Controlla che il percorso prima del filtro selezioni un array o un oggetto: $.store.book[?(@.price < 10)] filtra i libri, mentre $.store[?(@.price < 10)] guarda book e bicycle. Una proprietà che manca in un elemento vale undefined, quindi i confronti con essa sono falsi.
Che differenza c'è tra `==` e `===`?
Come in JavaScript, == converte i tipi ("10" == 10 è vero) mentre === confronta tipo e valore.
Perché l'output è limitato?
Nel risultato vengono scritte solo le prime 10.000 corrispondenze, per mantenere la pagina reattiva; la riga di stato indica il conteggio completo.
JSONPath è standardizzato?
Sì, dal 2024, con la RFC 9535. Le implementazioni però differiscono ancora, soprattutto nei filtri; questo strumento segue jsonpath-plus, la sintassi del JSONPath originale di Stefan Goessner.
Strumenti correlati
- Formattatore e validatore JSON Formattatore e validatore JSON gratuito che formatta, minifica e controlla il JSON nel browser, con gli errori di sintassi indicati per riga e colonna.
- Validatore JSON Schema Valida un documento JSON rispetto a un JSON Schema nel browser. Ogni errore è elencato con percorso nell'istanza, parola chiave e percorso nello schema.
- Tester di regex Testa le espressioni regolari JavaScript in tempo reale con corrispondenze evidenziate, gruppi di cattura, sostituzione e spiegazione di ogni token.