Espressioni di percorso JSON (SQL Server)
Si applica a: SQL Server 2016 (13.x) e alle sue versioni successive Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics (solo pool SQL serverless)
Usare le espressioni di percorso JSON per fare riferimento alle proprietà degli oggetti JSON.
È necessario specificare un'espressione di percorso quando si chiamano le funzioni seguenti.
Quando si chiama OPENJSON per creare una vista relazionale dei dati JSON. Per altre informazioni, vedere OPENJSON (Transact-SQL).
Quando si chiama JSON_VALUE per estrarre un valore dal testo JSON. Per altre informazioni, vedere JSON_VALUE (Transact-SQL).
Quando si chiama JSON_QUERY per estrarre un oggetto o una matrice JSON. Per altre informazioni, vedere JSON_QUERY (Transact-SQL).
Quando si chiama JSON_MODIFY per aggiornare il valore di una proprietà in una stringa JSON. Per altre informazioni, vedere JSON_MODIFY (Transact-SQL).
Parti di un'espressione di percorso
Un'espressione di percorso include due componenti.
La modalità percorso facoltativa, con valore lax o strict.
Il percorso stesso.
modalità percorso
All'inizio dell'espressione di percorso, è possibile dichiarare la modalità percorso specificando la parola chiave lax o strict. Il valore predefinito è lax.
Nella modalità lax la funzione restituisce valori vuoti se l'espressione di percorso contiene un errore. Se ad esempio si richiede il valore $.name e il testo JSON non contiene una chiave name, la funzione restituisce Null ma non genera un errore.
Nella modalità strict la funzione genera un errore se l'espressione di percorso contiene un errore.
La query seguente specifica in modo esplicito la modalità lax
nell'espressione di percorso.
DECLARE @json NVARCHAR(MAX);
SET @json=N'{ ... }';
SELECT * FROM OPENJSON(@json, N'lax $.info');
Percorso
Dopo la dichiarazione facoltativa della modalità percorso, specificare il percorso stesso.
Il segno di dollaro (
$
) rappresenta l'elemento contesto.Il percorso proprietà è un insieme di passaggi di percorso. I passaggi di percorso possono contenere gli elementi e gli operatori seguenti.
Nomi delle chiavi. Ad esempio,
$.name
e$."first name"
. Se il nome della chiave inizia con un segno di dollaro o contiene caratteri speciali quali spazi o punti (.
), racchiuderlo tra virgolette.Elementi matrice. Ad esempio:
$.product[3]
. Le matrici sono in base zero.L'operatore punto (
.
) indica un membro di un oggetto. Ad esempio, in$.people[1].surname
surname
è figlio dipeople
.
Esempi
Gli esempi inclusi in questa sezione fanno riferimento al testo JSON seguente.
{
"people": [{
"name": "John",
"surname": "Doe"
}, {
"name": "Jane",
"surname": null,
"active": true
}]
}
La tabella seguente illustra alcuni esempi di espressioni di percorso.
Espressione di percorso | Valore |
---|---|
$.people[0].name | John |
$.people[1] | { "name": "Jane", "surname": null, "active": true } |
$.people[1].surname | Null |
$ | { "people": [ { "name": "John", "surname": "Doe" }, { "name": "Jane", "surname": null, "active": true } ] } |
Modalità di gestione dei percorsi duplicati da parte delle funzioni predefinite
Se il testo JSON contiene proprietà duplicate, ad esempio due chiavi con lo stesso nome sullo stesso livello, le funzioni JSON_VALUE e JSON_QUERY restituiscono solo il primo valore corrispondente al percorso. Per analizzare un oggetto JSON che contiene chiavi duplicate e restituire tutti i valori, usare OPENJSON, come illustrato nell'esempio seguente.
DECLARE @json NVARCHAR(MAX);
SET @json=N'{"person":{"info":{"name":"John", "name":"Jack"}}}';
SELECT value
FROM OPENJSON(@json,'$.person.info');
Altre informazioni su JSON in SQL Server e nel database SQL di Azure
Video Microsoft
Nota
Alcuni collegamenti video in questa sezione potrebbero non funzionare in questo momento. Microsoft sta eseguendo la migrazione di contenuti in precedenza su Channel 9 verso una nuova piattaforma. I collegamenti verranno aggiornati man mano che i video vengono migrati alla nuova piattaforma.
Per un'introduzione visiva al supporto JSON predefinito in SQL Server e nel database SQL di Azure, vedere i video seguenti:
- JSON as a bridge between NoSQL and relational worlds (JSON come ponte tra NoSQL e gli ambienti relazionali)
Vedi anche
OPENJSON (Transact-SQL)
JSON_VALUE (Transact-SQL)
JSON_QUERY (Transact-SQL)