Usare OPENJSON con uno schema esplicito (SQL Server)Use OPENJSON with an Explicit 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

Usare OPENJSON con uno schema esplicito per restituire una tabella formattata come specificato nella clausola WITH.Use OPENJSON with an explicit schema to return a table that's formatted as you specify in the WITH clause.

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

Esempio: usare la clausola WITH per formattare l'outputExample - Use the WITH clause to format the output

La query seguente restituisce i risultati mostrati nella tabella riportata di seguito.The following query returns the results shown in the following table. Notare come la clausola AS JSON causa la restituzione dei valori come oggetti JSON anziché come valori scalari in col5 e array_element.Notice how the AS JSON clause causes values to be returned as JSON objects instead of scalar values in col5 and array_element.

DECLARE @json NVARCHAR(MAX) =
N'{"someObject":   
    {"someArray":  
      [  
          {"k1": 11, "k2": null, "k3": "text"},  
          {"k1": 21, "k2": "text2", "k4": { "data": "text4" }},  
          {"k1": 31, "k2": 32},  
          {"k1": 41, "k2": null, "k4": { "data": false }}     
       ]  
    }  
 }'  

SELECT * FROM  
 OPENJSON(@json, N'lax $.someObject.someArray')  
WITH ( k1 int,   
        k2 varchar(100),  
        col3 varchar(6) N'$.k3',  
        col4 varchar(10) N'lax $.k4.data',  
        col5 nvarchar(MAX) N'lax $.k4' AS JSON, 
        array_element nvarchar(MAX) N'$' AS JSON  
 )  

RisultatiResults

k1k1 k2k2 col3col3 col4col4 col5col5 array_elementarray_element
1111 NULLNULL "text""text" NULLNULL NULLNULL {"k1": 11, "k2": null, "k3": "text"}{"k1": 11, "k2": null, "k3": "text"}
2121 "text2""text2" NULLNULL "text4""text4" { "data": "text4" }{ "data": "text4" } {"k1": true, "k2": "text2", "k4": { "data": "text4" } }{"k1": true, "k2": "text2", "k4": { "data": "text4" } }
3131 "32""32" NULLNULL NULLNULL NULLNULL {"k1": 31, "k2": 32 }{"k1": 31, "k2": 32 }
4141 NULLNULL NULLNULL falsefalse { "data": false }{ "data": false } {"k1": 41, "k2": null, "k4": { "data": false } }{"k1": 41, "k2": null, "k4": { "data": false } }

Esempio: caricare JSON in una tabella SQL ServerSQL Server .Example - Load JSON into a SQL ServerSQL Server table.

Nell'esempio seguente viene caricato un intero oggetto JSON in una tabella SQL ServerSQL Server .The following example loads an entire JSON object into a SQL ServerSQL Server table.

DECLARE @json NVARCHAR(MAX) = '{  
  "id" : 2,  
  "firstName": "John",  
  "lastName": "Smith",  
  "isAlive": true,  
  "age": 25,  
  "dateOfBirth": "2015-03-25T12:00:00",  
  "spouse": null  
  }';  

  INSERT INTO Person  
  SELECT *   
  FROM OPENJSON(@json)  
  WITH (id int,  
        firstName nvarchar(50), lastName nvarchar(50),   
        isAlive bit, age int,  
        dateOfBirth datetime2, spouse nvarchar(50))  

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)