Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op: SQL Server 2016 (13.x) en latere versies
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (alleen serverloze SQL-pool)
SQL Analytics-eindpunt in Microsoft Fabric
Warehouse in Microsoft Fabric
Als u de uitvoer van de FOR JSON
-component automatisch wilt opmaken op basis van de structuur van de SELECT
-instructie, selecteert u de optie AUTO
.
Wanneer u de optie AUTO
opgeeft, wordt de indeling van de JSON-uitvoer automatisch bepaald op basis van de volgorde van kolommen in de SELECT-lijst en de bijbehorende brontabellen. U kunt deze indeling niet wijzigen.
Het alternatief is om de optie PATH
te gebruiken om de controle over de uitvoer te behouden.
- Zie Geneste JSON-uitvoer opmaken met path-modusvoor meer informatie over de optie
PATH
. - Zie Queryresultaten opmaken als JSON met FOR JSONvoor een overzicht van beide opties.
Een query die gebruikmaakt van de optie FOR JSON AUTO
moet een FROM
component hebben.
Hier volgen enkele voorbeelden van de FOR JSON
clausule met de optie AUTO
.
Azure Data Studio- is de aanbevolen queryeditor voor JSON-query's omdat de JSON-resultaten automatisch worden opgemaakt (zoals in dit artikel wordt weergegeven) in plaats van een platte tekenreeks weer te geven.
Voorbeelden
Voorbeeld 1
Query
Wanneer een query slechts naar één tabel verwijst, zijn de resultaten van de FOR JSON AUTO
component vergelijkbaar met de resultaten van FOR JSON PATH
. In dit geval maakt FOR JSON AUTO
geen geneste objecten. Het enige verschil is dat FOR JSON AUTO
punt-gescheiden aliassen (bijvoorbeeld Info.MiddleName
in het volgende voorbeeld) uitvoert als sleutels met punten, niet als geneste objecten.
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON AUTO
resultaat
[{
"Id": 1,
"FirstName": "Ken",
"LastName": "Sánchez",
"Info.MiddleName": "J"
}, {
"Id": 2,
"FirstName": "Terri",
"LastName": "Duffy",
"Info.MiddleName": "Lee"
}, {
"Id": 3,
"FirstName": "Roberto",
"LastName": "Tamburello"
}, {
"Id": 4,
"FirstName": "Rob",
"LastName": "Walters"
}, {
"Id": 5,
"FirstName": "Gail",
"LastName": "Erickson",
"Info.Title": "Ms.",
"Info.MiddleName": "A"
}]
Voorbeeld 2
Query
Wanneer u tabellen samenvoegt, worden kolommen in de eerste tabel gegenereerd als eigenschappen van het hoofdobject. Kolommen in de tweede tabel worden gegenereerd als eigenschappen van een genest object. De tabelnaam of alias van de tweede tabel (bijvoorbeeld D
in het volgende voorbeeld) wordt gebruikt als de naam van de geneste matrix.
SELECT TOP 2 SalesOrderNumber,
OrderDate,
UnitPrice,
OrderQty
FROM Sales.SalesOrderHeader H
INNER JOIN Sales.SalesOrderDetail D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON AUTO
resultaat
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO43659",
"D": [{
"UnitPrice": 34.40
}, {
"UnitPrice": 134.24,
"OrderQty": 5
}]
}]
Voorbeeld 3
Query
In plaats van FOR JSON AUTO te gebruiken, kunt u een FOR JSON PATH-subquery nesten in de SELECT-instructie, zoals wordt weergegeven in het volgende voorbeeld. In dit voorbeeld wordt hetzelfde resultaat uitgevoerd als in het voorgaande voorbeeld.
SELECT TOP 2
SalesOrderNumber,
OrderDate,
(SELECT UnitPrice, OrderQty
FROM Sales.SalesOrderDetail AS D
WHERE H.SalesOrderID = D.SalesOrderID
FOR JSON PATH) AS D
FROM Sales.SalesOrderHeader AS H
FOR JSON PATH
resultaat
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO4390",
"D": [{
"UnitPrice": 24.99
}]
}]
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: