Espressioni di percorso JSON (SQL Server)JSON Path Expressions (SQL Server)

In questo argomento si applica a: SìSQL ServerSìDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Usare le espressioni di percorso JSON per fare riferimento alle proprietà degli oggetti JSON.Use JSON path expressions to reference the properties of JSON objects.

È necessario specificare un'espressione di percorso quando si chiamano le funzioni seguenti.You have to provide a path expression when you call the following functions.

Parti di un'espressione di percorsoParts of a path expression

Un'espressione di percorso include due componenti.A path expression has two components.

  1. La modalità percorso facoltativa, con valore lax o strict.The optional path mode, with a value of lax or strict.

  2. Il percorso stesso.The path itself.

Path modePath mode

All'inizio dell'espressione di percorso, è possibile dichiarare la modalità percorso specificando la parola chiave lax o strict.At the beginning of the path expression, optionally declare the path mode by specifying the keyword lax or strict. Il valore predefinito è lax.The default is lax.

  • Nella modalità lax la funzione restituisce valori vuoti se l'espressione di percorso contiene un errore.In lax mode, the function returns empty values if the path expression contains an error. 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.For example, if you request the value $.name, and the JSON text doesn't contain a name key, the function returns null, but does not raise an error.

  • Nella modalità strict la funzione genera un errore se l'espressione di percorso contiene un errore.In strict mode, the function raises an error if the path expression contains an error.

La query seguente specifica in modo esplicito la modalità lax nell'espressione di percorso.The following query explicitly specifies lax mode in the path expression.

DECLARE @json NVARCHAR(MAX)
SET @json=N'{ ... }'

SELECT * FROM OPENJSON(@json, N'lax $.info')

PathPath

Dopo la dichiarazione facoltativa della modalità percorso, specificare il percorso stesso.After the optional path mode declaration, specify the path itself.

  • Il segno di dollaro ($) rappresenta l'elemento contesto.The dollar sign ($) represents the context item.

  • Il percorso proprietà è un insieme di passaggi di percorso.The property path is a set of path steps. I passaggi di percorso possono contenere gli elementi e gli operatori seguenti.Path steps can contain the following elements and operators.

    • Nomi delle chiavi.Key names. Ad esempio $.name e $."first name".For example, $.name and $."first name". Se il nome della chiave inizia con un segno di dollaro o contiene caratteri speciali quali spazi, racchiuderlo tra virgolette.If the key name starts with a dollar sign or contains special characters such as spaces, surround it with quotes.

    • Elementi matrice.Array elements. Ad esempio, $.product[3].For example, $.product[3]. Le matrici sono in base zero.Arrays are zero-based.

    • L'operatore punto (.) indica un membro di un oggetto.The dot operator (.) indicates a member of an object. Ad esempio, in $.people[1].surname surname è figlio di people.For example, in $.people[1].surname, surname is a child of people.

EsempiExamples

Gli esempi inclusi in questa sezione fanno riferimento al testo JSON seguente.The examples in this section reference the following JSON text.

{
    "people": [{
        "name": "John",
        "surname": "Doe"
    }, {
        "name": "Jane",
        "surname": null,
        "active": true
    }]
}

La tabella seguente illustra alcuni esempi di espressioni di percorso.The following table shows some examples of path expressions.

Espressione di percorsoPath expression ValoreValue
$.people[0].name$.people[0].name JohnJohn
$.people[1]$.people[1] { "name": "Jane", "surname": null, "active": true }{ "name": "Jane", "surname": null, "active": true }
$.people[1].surname$.people[1].surname nullnull
$ { "people": [ { "name": "John", "surname": "Doe" },{ "people": [ { "name": "John", "surname": "Doe" },
{ "name": "Jane", "surname": null, "active": true } ] }{ "name": "Jane", "surname": null, "active": true } ] }

Modalità di gestione dei percorsi duplicati da parte delle funzioni predefiniteHow built-in functions handle duplicate paths

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.If the JSON text contains duplicate properties - for example, two keys with the same name on the same level - the JSON_VALUE and JSON_QUERY functions return only the first value that matches the path. Per analizzare un oggetto JSON che contiene chiavi duplicate e restituire tutti i valori, usare OPENJSON, come illustrato nell'esempio seguente.To parse a JSON object that contains duplicate keys and return all values, use OPENJSON, as shown in the following example.

DECLARE @json NVARCHAR(MAX)
SET @json=N'{"person":{"info":{"name":"John", "name":"Jack"}}}'

SELECT value
FROM OPENJSON(@json,'$.person.info') 

Altre informazioni sul supporto JSON integrato in SQL ServerLearn more about the built-in JSON support in SQL Server

Per soluzioni specifiche, casi d'uso e indicazioni, vedere i post del blog sul supporto JSON integrato in SQL Server e nel database SQL di Azure redatti da Jovan Popovic, Microsoft Program Manager.For lots of specific solutions, use cases, and recommendations, see the blog posts about the built-in JSON support in SQL Server and in Azure SQL Database by Microsoft Program Manager Jovan Popovic.

Vedere ancheSee Also

OPENJSON (Transact-SQL) OPENJSON (Transact-SQL)
JSON_VALUE (Transact-SQL) JSON_VALUE (Transact-SQL)
JSON_QUERY (Transact-SQL)JSON_QUERY (Transact-SQL)