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 Fabric

Gebruik OPENJSON met een expliciet schema om een tabel te retourneren die is opgemaakt zoals u opgeeft in de WITH-component.

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

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  
 )  

Resultaten

k1 k2 col3 col4 col5 array-element
11 NULL "tekst" NULL NULL {"k1": 11, "k2": null, "k3": "text"}
21 "tekst2" NULL "tekst4" { "data": "text4" } {"k1": true, "k2": "text2", "k4": { "data": "text4" } }
31 "32" NULL NULL NULL {"k1": 31, "k2": 32 }
41 NULL NULL vals { "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 in SQL Server en Azure SQL Database:

  • OPENJSON (Transact-SQL)