Estrattore di percorsi JSON

Incolla JSON e inserisci un'espressione di percorso come $.store.book[0].title per estrarre valori.

Risultato

Inserisci JSON e un percorso, poi clicca su Estrai.

Come funziona

  1. Incolla il tuo JSON: inserisci un oggetto o un array JSON nel campo di input.
  2. Inserisci un'espressione JSONPath: digita un percorso come $.store.book[*].author o $.users[?(@.age > 18)] per selezionare i dati desiderati.
  3. Visualizza i risultati estratti: i valori corrispondenti appaiono all'istante nel pannello di uscita. Copia il risultato o esportalo.

Perché usare l'estrattore JSONPath?

Quando lavori con risposte API complesse o JSON profondamente annidato, estrarre valori specifici a mano è lento e soggetto a errori. JSONPath è il linguaggio di query per JSON, simile a XPath per XML. Permette di puntare esattamente ai dati di cui hai bisogno con un'espressione di percorso concisa, che si tratti di un singolo valore annidato, di tutti gli elementi di un array o di record filtrati che corrispondono a una condizione. Questo strumento rende l'esplorazione JSONPath interattiva senza scrivere codice.

Funzionalità

Domande frequenti

Cos'è JSONPath?

JSONPath è un linguaggio di query per documenti JSON, analogo a XPath per XML. Un percorso come $.users[*].name seleziona il campo name di ogni oggetto nell'array users. È ampiamente utilizzato per il test di API, la trasformazione di dati e l'elaborazione JSON.

Come filtrare gli elementi di un array secondo una condizione?

Usa un'espressione di filtro: $.items[?(@.price < 50)] restituisce tutti gli elementi il cui prezzo è inferiore a 50. Il simbolo @ fa riferimento all'elemento in corso di valutazione.

Supporta la ricerca ricorsiva?

Sì. L'operatore .. esegue una ricerca ricorsiva a tutti i livelli. Per esempio, $..name trova tutte le chiavi name ovunque siano nella struttura JSON, indipendentemente dalla profondità di annidamento.

Da un post di blog a RFC 9535: la strada di 17 anni verso uno standard JSONPath

Stefan Gössner ha proposto JSONPath in un singolo post di blog nel febbraio 2007, adattando l'idea di XPath a JSON. Ha pubblicato un'implementazione JavaScript di riferimento, ha abbozzato la sintassi (la radice $, operatori figlio punto e parentesi, .. per discesa ricorsiva, * per jolly, [inizio:fine:passo] per slicing di array, [?(...)] per espressioni filtro) e l'ecosistema più ampio ha seguito. Le implementazioni proliferarono: jsonpath per JavaScript, JsonPath per Java, jq (Stephen Dolan, 2012) che è JSONPath-adiacente ma una sua cosa, jsonpath-ng per Python, JMESPath (AWS, 2014) come rivale più rigoroso. Il problema: ogni implementazione ha derivato. Sintassi di filtro, semantica di ricorsione, corrispondenza regex, identificatori radice, tutti sottilmente diversi tra le librerie. Uno studio comparativo del 2023 di Carsten Bormann et al. ha testato 41 implementazioni JSONPath distinte contro lo stesso input e ha ottenuto 41 set di risultati diversi per la stessa espressione. Il Gruppo di Lavoro JSONPath dell'IETF si è riunito nel 2020 per correggere ciò. RFC 9535 «JSONPath: Query Expressions for JSON» è stato pubblicato nel febbraio 2024, diventando il primo standard formale per JSONPath, 17 anni dopo il post originale di Gössner. RFC 9535 codifica la sintassi, definisce un formato di output normalizzato, richiede la normalizzazione Unicode per i confronti di stringhe, e aggiunge una suite di test di conformità.

Cheat sheet della sintassi JSONPath

I sette operatori che coprono la maggior parte delle query del mondo reale:

Dove ricorri davvero a JSONPath

Errori che mordono

JSONPath vs jq vs JMESPath vs JSON Pointer

Altre domande frequenti

JSONPath è uguale a XPath?

Ispirato da esso, non identico. XPath è stato finalizzato dal W3C nel 1999 per XML, JSONPath è stato abbozzato da Gössner nel 2007 per portare la stessa idea a JSON. Le differenze più grandi: JSONPath usa . e [] invece di /, JSONPath non ha concetto di namespace o attributi XML, JSONPath è stato standardizzato molto più tardi (2024 vs 1999), quindi per anni è stata una sintassi de facto con molte implementazioni incompatibili.

Perché lo stesso JSONPath dà risultati diversi in strumenti diversi?

Perché JSONPath non è stato standardizzato fino a RFC 9535 (febbraio 2024). Prima di allora, ogni implementazione faceva le proprie scelte su sintassi di filtro, supporto regex, identificatori radice, regole di escape, e casi limite (array vuoti, chiavi mancanti, coercizione di tipo nei filtri). Uno studio del gruppo di lavoro IETF del 2023 ha testato 41 implementazioni sullo stesso input e ha ottenuto 41 set di risultati diversi. RFC 9535 risolve questo per librerie nuove e aggiornate; le librerie più vecchie divergeranno fino a quando non migrano. Verifica sempre se la tua libreria afferma «conformità RFC 9535».

Posso modificare il JSON con JSONPath, o solo leggere?

RFC 9535 definisce JSONPath strettamente come un linguaggio di query: restituisce valori da un documento, non muta. Per modificare JSON, usa JSON Patch (RFC 6902), che usa percorsi JSON Pointer e operazioni add/remove/replace/copy/move/test. Alcune librerie combinano entrambi (e.g. jsonpath-plus in JavaScript ha un'estensione di mutazione apply()) ma non è JSONPath standard.

JSONPath supporta espressioni regolari nei filtri?

RFC 9535 ha aggiunto due funzioni regex: match(node, regex) corrisponde all'intera stringa, search(node, regex) corrisponde a qualsiasi sottostringa. Esempio: $.book[?(match(@.isbn, "^978-"))]. Il sapore regex è I-Regexp (RFC 9485, un profilo di regex XML Schema), non PCRE o regex JavaScript. Le librerie più vecchie usavano il sapore regex del loro linguaggio host, il che rende le query regex particolarmente non portabili.

Il mio JSON viene inviato da qualche parte quando uso questo strumento?

No. La valutazione del percorso gira interamente nel motore JavaScript del tuo browser. Apri la scheda Rete in DevTools ed esegui una query, vedrai zero richieste in uscita durante la valutazione. Sicuro per risposte API con segreti, dump di database con PII, o file di configurazione contenenti credenziali.

Strumenti correlati

Visualizzatore di alberi JSON Formattatore e validatore JSON gratuito online Convertitore da JSON a CSV Confronto JSON