percorso json

jsonpath implementa il supporto per il linguaggio di percorso SQL/JSON in PostgreSQL per interrogare i dati JSON. Fornisce una rappresentazione binaria dell'espressione di percorso SQL/JSON analizzata che specifica gli elementi che devono essere recuperati dal motore di percorso dai dati JSON per un'ulteriore elaborazione con le funzioni di query SQL/JSON. La semantica dei predicati di percorso e degli operatori di SQL/JSON segue generalmente quella di SQL. La sintassi del percorso SQL/JSON utilizza alcune convenzioni di JavaScript:
  • Per l'accesso ai membri si utilizza un punto (.).
  • Le parentesi quadre ([]) sono utilizzate per l'accesso agli array.
  • Gli array SQL/JSON sono 0-relativi (a differenza dei normali array SQL che partono da 1).
Di solito, in una query SQL, un'espressione di percorso SQL/JSON viene scritta come letterale di stringa di caratteri SQL. Ciò significa che l'espressione del percorso deve essere racchiusa tra apici singoli. Inoltre, gli apici singoli desiderati all'interno del valore devono essere raddoppiati. Alcune forme di espressioni di percorso richiedono letterali di stringa al loro interno. I letterali di stringa incorporati rispettano le convenzioni di JavaScript/ECMAScript:
  • Devono essere circondati da doppi apici.
  • All'interno di essi si possono usare gli escape backslash per rappresentare caratteri altrimenti difficili da digitare.
Per ottenere una doppia virgoletta all'interno di un letterale di stringa incorporato, si deve digitare '\". Per ottenere una barra rovesciata, è necessario digitare '\\.
Altre sequenze speciali di backslash sono quelle riconosciute nelle stringhe JSON:
Per vari caratteri di controllo ASCII
  • \b
  • \f
  • \n
  • \r
  • \t
  • \v
Per un carattere Unicode identificato dal suo punto di codice a 4 cifre esagonali
  • \uNNNN
La sintassi backslash comprende anche due casi non consentiti da JSON:
Per un codice di caratteri scritto con due sole cifre esadecimali
  • \xNN
Per un codice di caratteri scritto con 1-6 cifre esadecimali
  • \u{N...}
Un'espressione di percorso consiste in una sequenza di elementi di percorso, che possono essere:
  • Letterali di percorso di tipi primitivi JSON: Testo Unicode, numerico, vero, falso o null.
  • Variabili di percorso.
  • Operatori accessori.
  • operatori e metodi jsonpath, che si possono usare per fornire espressioni di filtro o definire l'ordine di valutazione dei percorsi.

variabili jsonpath

$
Una variabile che rappresenta il testo JSON da interrogare (l'elemento del contesto).
$varname
Una variabile con nome. È possibile impostare il valore tramite il parametro 'vars di diverse funzioni di elaborazione JSON.
@
Una variabile che rappresenta il risultato della valutazione del percorso nelle espressioni di filtro.

accessori jsonpath

.chiave
."$varname"
Accessore membro che restituisce un membro dell'oggetto con la chiave specificata. Se il nome della chiave è una variabile con nome che inizia con $ o non soddisfa le regole JavaScript di un identificatore, deve essere racchiuso tra doppi apici come una stringa letterale di caratteri.
.*
Accessore ai membri con carattere jolly, che restituisce i valori di tutti i membri situati al livello superiore dell'oggetto corrente.
.**
Accessore ricorsivo ai membri, che elabora tutti i livelli della gerarchia JSON dell'oggetto corrente e restituisce tutti i valori dei membri, indipendentemente dal loro livello di annidamento. Si tratta di un'estensione PostgreSQL dello standard SQL/JSON.
.**{level}
.**{start_level to end_level}
Come .**, ma con un filtro sui livelli annidati della gerarchia JSON. I livelli di annidamento sono specificati come numeri interi. Il livello zero corrisponde all'oggetto corrente. Per accedere al livello di annidamento più basso, si può usare la parola chiave last. Si tratta di un'estensione PostgreSQL dello standard SQL/JSON.
[pedice, ...]
Un accesore di elementi della matrice. subscript può essere dato in due forme: 'index o 'start_index e 'end_index. La prima forma restituisce un singolo elemento della matrice in base al suo indice. La seconda forma restituisce un array diviso per l'intervallo di indici, compresi gli elementi che corrispondono ai start_index e 'end_index forniti.
Il " index specificato può essere un intero, così come un'espressione che restituisce un singolo valore numerico, che viene automaticamente trasformato in intero. L'indice zero corrisponde al primo elemento della matrice. È inoltre possibile utilizzare la parola chiave last per indicare l'ultimo elemento dell'array, utile per gestire array di lunghezza sconosciuta.
[*]
Accessore agli elementi della matrice con carattere jolly che restituisce tutti gli elementi della matrice.

Il linguaggio di percorso SQL/JSON

Analogamente alle espressioni 'XPath utilizzate per l'accesso 'SQL a XML, le espressioni di percorso 'SQL/JSON specificano quali elementi recuperare dai dati 'JSON.

In PostgreSQL, espressioni di percorso sono implementate come tipo di dati 'jsonpath. Possono utilizzare qualsiasi elemento descritto in jsonpath.

le funzioni e gli operatori di query JSON passano l'espressione di percorso fornita al motore di percorso per la valutazione. Se l'espressione corrisponde ai dati JSON interrogati, viene restituito l'elemento SQL/JSON corrispondente.

Le espressioni di percorso sono scritte nel linguaggio di percorso SQL/JSON. Possono includere espressioni aritmetiche e funzioni. L'espressione fornita deve essere racchiusa tra apici singoli, poiché le funzioni di query trattano tale espressione come una stringa di testo.

Un'espressione di percorso è costituita da una sequenza di elementi consentiti da 'jsonpath. L'espressione del percorso viene valutata da sinistra a destra. È possibile utilizzare le parentesi per modificare l'ordine delle operazioni. Se la valutazione ha successo, viene prodotta una sequenza SQL/JSON. Il risultato della valutazione viene restituito alla funzione di query JSON che completa il calcolo specificato.

Per fare riferimento all'elemento del contesto (dati JSON da interrogare), si può usare il segno '$ nell'espressione del percorso. È possibile far seguire al segno uno o più accessi jsonpath. Scendono nella struttura JSON livello per livello per recuperare il contenuto dell'elemento del contesto. Ogni operatore che segue tratta il risultato della fase di valutazione precedente.

Per ulteriori informazioni sugli operatori e sui metodi di 'jsonpath, vedere jsonpath