Usare OPENJSON con lo Schema predefinito (SQL Server)Use OPENJSON with the Default Schema (SQL Server)

QUESTO ARGOMENTO SI APPLICA A: sìSQL Server (a partire dalla versione 2016)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

L'uso della funzione OPENJSON con lo schema predefinito restituisce una tabella con una riga per ogni proprietà dell'oggetto o per ogni elemento nella matrice.Use OPENJSON with the default schema to returns a table with one row for each property of the object or for each element in the array.

Di seguito sono riportati alcuni esempi che usano OPENJSON con lo schema predefinito.Here are some examples that use OPENJSON with the default schema. Per altre informazioni ed esempi, vedere OPENJSON (Transact-SQL).For more info and more examples, see OPENJSON (Transact-SQL).

Esempio: restituire ogni proprietà di un oggettoExample - Return each property of an object

QueryQuery

SELECT *
FROM OPENJSON('{"name":"John","surname":"Doe","age":45}') 

RisultatiResults

KeyKey ValoreValue
namename JohnJohn
surnamesurname DoeDoe
ageage 4545

Esempio: restituire ogni elemento di una matriceExample - Return each element of an array

QueryQuery

SELECT [key],value
FROM OPENJSON('["en-GB", "en-UK","de-AT","es-AR","sr-Cyrl"]') 

RisultatiResults

KeyKey ValoreValue
00 en-GBen-GB
11 en-UKen-UK
22 de-ATde-AT
33 es-ARes-AR
44 sr-Cyrlsr-Cyrl

Esempio: convertire JSON in una tabella temporaneaExample - Convert JSON to a temporary table

La query seguente restituisce tutte le proprietà dell'oggetto info .The following query returns all properties of the info object.

DECLARE @json NVARCHAR(MAX)

SET @json=N'{  
     "info":{    
       "type":1,  
       "address":{    
         "town":"Bristol",  
         "county":"Avon",  
         "country":"England"  
       },  
       "tags":["Sport", "Water polo"]  
    },  
    "type":"Basic"  
 }'

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

RisultatiResults

KeyKey ValoreValue TipoType
Tipotype 11 00
addressaddress { "town":"Bristol", "county":"Avon", "country":"England" }{ "town":"Bristol", "county":"Avon", "country":"England" } 55
tagstags [ "Sport", "Water polo" ][ "Sport", "Water polo" ] 44

Esempio: combinare dati relazionali e dati JSONExample - Combine relational data and JSON data

Nell'esempio seguente, la tabella SalesOrderHeader include una colonna di testo SalesReason che contiene una matrice di SalesOrderReasons in formato JSON.In the following example, the SalesOrderHeader table has a SalesReason text column that contains an array of SalesOrderReasons in JSON format. Gli oggetti SalesOrderReasons contengono proprietà come "Produttore" e "Qualità".The SalesOrderReasons objects contain properties like "Manufacturer" and "Quality". Nell'esempio viene creato un report che unisce ogni riga dell'ordine di vendita ai motivi di vendita correlati espandendo la matrice JSON dei motivi di vendita come se questi fossero archiviati in una tabella figlio separata.The example creates a report that joins every sales order row to the related sales reasons by expanding the JSON array of sales reasons as if the reasons were stored in a separate child table.

SELECT SalesOrderID,OrderDate,value AS Reason
FROM Sales.SalesOrderHeader
CROSS APPLY OPENJSON(SalesReasons)

In questo esempio, OPENJSON restituisce una tabella dei motivi di vendita in cui questi vengono visualizzati come colonna valore.In this example, OPENJSON returns a table of sales reasons in which the reasons appear as the value column. L'operatore CROSS APPLY unisce ogni riga dell'ordine di vendita alle righe restituite dalla funzione con valori di tabella OPENJSON.The CROSS APPLY operator joins each sales order row to the rows returned by the OPENJSON table-valued function.

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)