Formátování vnořeného výstupu JSON s režimem PATH (SQL Server)
platí pro: SQL Server 2016 (13.x) a novější
Azure SQL Database
azure SQL Managed Instance
Azure Synapse Analytics (jenom bezserverový fond SQL)
Pokud chcete zachovat úplnou kontrolu nad výstupem klauzule FOR JSON, zadejte možnost PATH.
režim PATH umožňuje vytvářet obálkové objekty a vnořovat složité vlastnosti. Výsledky jsou formátovány jako pole objektů JSON.
Alternativou je použít možnost AUTO k automatickému formátování výstupu na základě struktury příkazu SELECT.
- Další informace o možnosti AUTO najdete v tématu Automatické formátování výstupu JSON pomocí režimu AUTO .
- Přehled obou možností najdete v části Formátování výsledků dotazu jako JSON pomocí FOR JSON.
Tady je několik příkladů klauzule FOR JSON s možností PATH. Naformátujte vnořené výsledky pomocí názvů sloupců oddělených tečkami nebo pomocí vnořených dotazů, jak je znázorněno v následujících příkladech. Ve výchozím nastavení nejsou hodnoty null zahrnuty do výstupu FOR JSON. Azure Data Studio je doporučeným editorem dotazů pro dotazy JSON, protože automaticky formátuje výsledky JSON (jak je vidět v tomto článku) místo zobrazení plochého řetězce.
Příklad – názvy sloupců oddělených tečkami
Následující dotaz naformátuje prvních pět řádků z tabulky AdventureWorks Person
jako JSON.
Klauzule FOR JSON PATH používá alias sloupce nebo název sloupce k určení názvu klíče ve výstupu JSON. Pokud alias obsahuje tečky, vytvoří možnost PATH vnořené objekty.
dotazu
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON PATH
výsledek
[{
"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"
}
}]
Příklad – více tabulek
Pokud v dotazu odkazujete na více než jednu tabulku, FOR JSON PATH vnořuje každý sloupec pomocí svého aliasu. Následující dotaz vytvoří jeden objekt JSON pro každý pár (OrderHeader, OrderDetails).
dotazu
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
výsledek
[{
"Order": {
"Number": "SO43659",
"Date": "2011-05-31T00:00:00"
},
"Product": {
"Price": 2024.9940,
"Quantity": 1
}
}, {
"Order": {
"Number": "SO43659"
},
"Product": {
"Price": 2024.9940
}
}]
Další informace o FORMÁTU JSON v SQL Serveru a Azure SQL Database
Microsoft videa
Pro vizuální úvod k vestavěné podpoře JSON v SQL Serveru a Azure SQL Database se podívejte na následující videa: