Che cos'è JSONPath?

JSONPath è un linguaggio di query per JSON, simile a come XPath funziona per XML. Ti permette di navigare ed estrarre dati da una struttura JSON usando espressioni di percorso. Un'espressione JSONPath inizia con $, che rappresenta la radice del documento, e utilizza la notazione con punto (.key) o la notazione con parentesi (['key']) per attraversare gli oggetti, e [index] per accedere agli elementi dell'array.

JSONPath è stato originariamente descritto da Stefan Gössner nel 2007 ed è diventato uno standard ampiamente utilizzato in API, framework di test e pipeline di elaborazione dati. È supportato in molti linguaggi e strumenti, inclusi JavaScript, Python, Java e database come PostgreSQL e MySQL.

Descrizione dello strumento

Questo strumento ti permette di incollare qualsiasi documento JSON valido e scrivere un'espressione JSONPath per interrogarlo. I risultati vengono visualizzati istantaneamente mentre digiti, mostrando tutti i valori corrispondenti come un array JSON formattato. Il conteggio delle corrispondenze viene visualizzato separatamente in modo da poter verificare rapidamente quanti nodi sono stati selezionati.

Esempi

JSON di input:

{
  "store": {
    "book": [
      { "title": "Moby Dick", "price": 8.99, "category": "fiction" },
      { "title": "War and Peace", "price": 12.5, "category": "fiction" },
      {
        "title": "A Brief History of Time",
        "price": 7.99,
        "category": "science"
      }
    ]
  }
}
Espressione Risultato
$.store.book[*].title Tutti i titoli dei libri
$.store.book[0] Primo oggetto libro
$.store.book[?(@.price < 10)] Libri più economici di $10
$.store.book[?(@.category == "fiction")] Solo libri di narrativa
$..price Tutti i valori di prezzo in qualsiasi punto

Funzionalità

  • Valutazione in tempo reale — i risultati si aggiornano mentre digiti l'espressione o modifichi il JSON
  • Visualizza il conteggio delle corrispondenze in un campo dedicato
  • Pulsante Copia nel campo dell'espressione per il riutilizzo rapido
  • Pulsante Incolla per inserire rapidamente JSON o espressioni dagli appunti
  • Segnalazione degli errori per JSON non valido o espressioni di percorso malformate

Come funziona

Le espressioni JSONPath vengono valutate rispetto al JSON analizzato utilizzando la libreria jsonpath-plus. Il simbolo $ si riferisce all'elemento radice. I nodi figlio sono accessibili con . o [], i caratteri jolly con *, la discesa ricorsiva con .. e i filtri con [?(...)]. Il risultato è sempre un array di valori corrispondenti, anche se viene trovata una sola corrispondenza.

Opzioni spiegate

Sintassi Significato
$ Elemento radice
.key o ['key'] Proprietà figlio
[*] Tutti gli elementi dell'array
[0] Primo elemento dell'array (indicizzato da zero)
[-1] Ultimo elemento dell'array
[0,2] Elementi agli indici 0 e 2
[0:2] Elementi dall'indice 0 a 1 (slice)
..key Discesa ricorsiva — trova key a qualsiasi profondità
[?(@.price > 5)] Filtro — elementi dove price è maggiore di 5
@ Nodo corrente (utilizzato all'interno di espressioni di filtro)

Casi d'uso

  • Sviluppo di API — verifica che un selettore JSONPath utilizzato in un client REST, suite di test o strumento di mappatura dati estragga i campi previsti da una risposta API
  • Trasformazione dati — identifica quali valori estrarre da payload JSON annidati prima di scrivere uno script di trasformazione
  • Imparare JSONPath — sperimenta la sintassi del percorso in modo interattivo per comprendere come operatori come .., [*] e [?()] si comportano su dati reali

Suggerimenti

  • Usa $..* per ottenere ogni singolo valore nell'intero documento — utile per esplorare strutture JSON sconosciute.
  • Le espressioni di filtro supportano confronti (==, !=, <, >, <=, >=) e possono fare riferimento a proprietà annidate: [?(@.author.name == "Rees")].
  • Per trovare una proprietà indipendentemente dalla sua profondità, usa la discesa ricorsiva ..: $..title trova tutti i campi title in qualsiasi punto del documento.