Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: SQL Server 2016 (13.x) och senare versioner
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (endast serverlös SQL-pool)
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
SQL Database i Förhandsversion av Microsoft Fabric
Använd OPENJSON med ett explicit schema för att returnera en tabell som är formaterad som du anger i WITH -satsen.
Här följer några exempel som använder OPENJSON med ett explicit schema. Mer information finns i OPENJSON (Transact-SQL).
Exempel – Använd WITH-satsen för att formatera utdata
Följande fråga returnerar resultatet som visas i följande tabell. Observera hur AS JSON-satsen gör att värden returneras som JSON-objekt i stället för skalärvärden i col5 och 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 } } |
Exempel – Läs in JSON i en SQL Server-tabell.
I följande exempel läses ett helt JSON-objekt in i en SQL Server-tabell.
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))
Läs mer om JSON i SQL Database Engine
En visuell introduktion till det inbyggda JSON-stödet finns i följande videor: