Delen via


OPENJSON gebruiken met een expliciet schema

Van toepassing op: SQL Server 2016 (13.x) en latere versies Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (alleen serverloze SQL-pool)SQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft FabricSQL-database in Microsoft Fabric Preview

Gebruik OPENJSON met een expliciet schema om een tabel te retourneren die is geformatteerd zoals u in de WITH clausule opgeeft.

Hier volgen enkele voorbeelden die gebruikmaken van OPENJSON met een expliciet schema. Zie OPENJSON (Transact-SQL) voor meer informatie.

Voorbeeld: gebruik de WITH clause om de uitvoer op te maken

De volgende query retourneert de resultaten die worden weergegeven in de volgende tabel. U ziet hoe de AS JSON-component ervoor zorgt dat waarden worden geretourneerd als JSON-objecten in plaats van scalaire waarden in col5 en 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  
 )  

Results

k1 k2 col3 col4 col5 array_element
11 NULL "text" NULL NULL {"k1": 11, "k2": null, "k3": "text"}
21 "text2" NULL "text4" { "data": "text4" } {"k1": true, "k2": "text2", "k4": { "data": "text4" } }
31 "32" NULL NULL NULL {"k1": 31, "k2": 32 }
41 NULL NULL false { "data": false } {"k1": 41, "k2": null, "k4": { "data": false } }

Voorbeeld: JSON laden in een SQL Server-tabel.

In het volgende voorbeeld wordt een heel JSON-object in een SQL Server-tabel geladen.

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))  

Meer informatie over JSON in de SQL Database Engine

Zie de volgende video's voor een visuele inleiding tot de ingebouwde JSON-ondersteuning:

  • OPENJSON (Transact-SQL)