Vai al contenuto

Banco di prova per JSONPath

JSONPath Tester

Esegue un’espressione JSONPath su un documento ed evidenzia i nodi corrispondenti mentre scrivi.

Esegue una query JSONPath su un documento e mostra ogni nodo selezionato, con il percorso di ciascuno. Implementa l’RFC 9535 — lo standard del 2024 — invece di una delle vent’anni di implementazioni fra loro incompatibili che l’hanno preceduto, il che conta appena la query contiene un filtro.

🔒 Funziona interamente nel tuo browserjsonjsonpathquerytest

Query

Dalla radice: ovunque più in basso, il membro «book»; poi i figli che passano il filtro; poi il membro «title».

Documento

Corrispondenze

I risultati compaiono qui mentre scrivi.

Segue la RFC 9535, lo standard del 2024, e non i vent’anni di implementazioni incompatibili che l’hanno preceduta. Le differenze che si sentono: un risultato è un elenco di nodi e tiene i duplicati, .. visita un nodo prima dei suoi figli, un membro assente è uguale solo a un altro membro assente, e confrontare con una query che potrebbe corrispondere a più nodi è un errore di sintassi invece che un’ipotesi. I pattern dentro match() e search() vengono passati al motore di espressioni regolari del browser stesso, che accetta più del dialetto I-Regexp prescritto dalla RFC.

Come si usa

  1. Incollare il documento

    Qualunque cosa si analizzi come JSON. La query gira in un worker, così un documento grande tiene la pagina reattiva mentre si scrive.

  2. Scrivere la query, o partire da un esempio

    I pulsanti sotto la casella coprono le forme che servono: un carattere jolly, una ricerca fra i discendenti, una fetta, un filtro, un’espressione regolare e una funzione. Sopra di essi compare una descrizione in parole semplici di che cosa significa la propria query.

  3. Leggere le corrispondenze con i loro percorsi

    Ogni risultato porta il percorso normalizzato che vi è arrivato, così si vede se una corrispondenza viene da dove ci si aspettava. La riga di statistica dice se la query è singolare — capace di selezionare al massimo un nodo — che è quello che sarebbe un JSON Pointer.

Domande frequenti

La mia query funziona in un altro strumento ma non qui.

Probabilmente una differenza dell’RFC 9535. Lo standard ha tolto cose che le implementazioni più vecchie permettevano: le espressioni script fra `()`, `$..[?(@.x)]` con la vecchia sintassi di filtro fra parentesi, e il confronto con una query che potrebbe corrispondere a più nodi — quest’ultimo ora è un errore di sintassi invece di un’ipotesi.

Perché lo stesso valore compare due volte?

Perché il risultato è una lista di nodi, non un insieme. `$..price` che raggiunge lo stesso nodo per due rami lo elenca due volte, per scelta: deduplicare perderebbe l’informazione su da dove viene ogni corrispondenza.

Le espressioni regolari in `match()` sono standard?

Non esattamente. L’RFC specifica I-Regexp, un dialetto piccolo; qui i pattern vengono passati al motore del browser, che ne accetta di più. Un pattern che funziona qui può essere rifiutato da un’implementazione stretta — vale la pena saperlo prima di metterne uno in produzione.

Può modificare il documento?

No: JSONPath seleziona, non scrive. Per modificare, i percorsi mostrati qui sono puntatori RFC 6901 e possono andare dritti in un JSON Patch, che è quello che produce lo strumento di diff JSON di questo sito.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.