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
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (endast serverlös SQL-pool)
Om du vill behålla fullständig kontroll över utdata från FOR JSON--satsen anger du alternativet PATH.
PATH-läge låter dig skapa omslagsobjekt och kapsla in komplexa egenskaper. Resultatet formateras som en matris med JSON-objekt.
Alternativet är att använda alternativet AUTO för att formatera utdata automatiskt baserat på strukturen för instruktionen SELECT.
- Mer information om alternativet AUTO finns i Formatera JSON-utdata automatiskt med autoläge .
- En översikt över båda alternativen finns i Formatera frågeresultat som JSON med FOR JSON-.
Här följer några exempel på satsen FOR JSON med alternativet PATH. Formatera kapslade resultat med hjälp av punktavgränsade kolumnnamn eller med hjälp av kapslade frågor, enligt följande exempel. Som standard ingår inte null-värden i FÖR JSON- utdata. Azure Data Studio är den rekommenderade frågeredigeraren för JSON-frågor eftersom det automatiskt formaterar JSON-resultaten (som du ser i den här artikeln) i stället för att visa en platt sträng.
Exempel – Punktavgränsade kolumnnamn
Följande fråga formaterar de första fem raderna från tabellen AdventureWorks Person
som JSON.
Satsen FOR JSON PATH använder kolumnaliaset eller kolumnnamnet för att fastställa nyckelnamnet i JSON-utdata. Om ett alias innehåller punkter skapar alternativet PATH kapslade objekt.
Fråga
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON PATH
resultat
[{
"Id": 1,
"FirstName": "Ken",
"LastName": "Sanchez",
"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.",
"MiddleName": "A"
}
}]
Exempel – Flera tabeller
Om du refererar till fler än en tabell i en fråga FOR JSON PATH kapslar varje kolumn med hjälp av dess alias. Följande fråga skapar ett JSON-objekt per (OrderHeader, OrderDetails)-par som är anslutna till frågan.
Fråga
SELECT TOP 2 H.SalesOrderNumber AS 'Order.Number',
H.OrderDate AS 'Order.Date',
D.UnitPrice AS 'Product.Price',
D.OrderQty AS 'Product.Quantity'
FROM Sales.SalesOrderHeader H
INNER JOIN Sales.SalesOrderDetail D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON PATH
resultat
[{
"Order": {
"Number": "SO43659",
"Date": "2011-05-31T00:00:00"
},
"Product": {
"Price": 2024.9940,
"Quantity": 1
}
}, {
"Order": {
"Number": "SO43659"
},
"Product": {
"Price": 2024.9940
}
}]
Läs mer om JSON i SQL Server och Azure SQL Database
Microsoft-videor
En visuell introduktion till det inbyggda JSON-stödet i SQL Server och Azure SQL Database finns i följande videor: