Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2016 (13.x) a novější verze
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (pouze bezserverový fond SQL)
Koncový bod analýzy SQL ve službě Microsoft Fabric
Sklad v Microsoft Fabric
SQL databáze v Microsoft Fabric
Pokud chcete zachovat úplnou kontrolu nad výstupem FOR JSON klauzule, zadejte PATH možnost.
režim PATH umožňuje vytvářet objekty obálky a vnořit složité vlastnosti. Výsledky jsou formátovány jako pole objektů JSON.
Alternativou je použití AUTO možnosti automatického formátování výstupu SELECT na základě struktury příkazu.
- Další informace o této možnosti najdete v tématu
AUTOrežimu. - Přehled obou možností najdete v části Formátování výsledků dotazu jako JSON pomocí FOR JSON.
Následující příklady ukazují, jak používat FOR JSON klauzuli s PATH možností. 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 příkladech. Ve výchozím nastavení nejsou hodnoty null zahrnuty ve výstupu FOR JSON.
Poznámka:
Rozšíření MSSQL pro Visual Studio Code může automaticky formátovat výsledky JSON (jak je vidět v tomto článku) místo zobrazení neformátovaného řetězce.
Examples
Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2025 nebo AdventureWorksDW2025, kterou si můžete stáhnout z domovské stránky Microsoft SQL Serveru pro ukázky a komunitní projekty .
A. 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, PATH možnost vytvoří vnořené objekty.
SELECT TOP 5 BusinessEntityID AS Id,
FirstName,
LastName,
Title AS 'Info.Title',
MiddleName AS 'Info.MiddleName'
FROM Person.Person
FOR JSON PATH;
Tady je soubor výsledků.
[{
"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"
}
}]
B. Více tabulek
Pokud v dotazu odkazujete na více než jednu tabulku, FOR JSON PATH vnořuje každý sloupec pomocí jeho aliasu. Následující dotaz vytvoří jeden objekt JSON pro každou (OrderHeader, OrderDetails) dvojici, ke které se dotaz připojí.
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 AS H
INNER JOIN Sales.SalesOrderDetail AS D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON PATH;
Tady je soubor výsledků.
[{
"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 databázovém stroji SQL
Vizuální úvod k integrované podpoře JSON najdete v tématu JSON jako most mezi NoSQL a relačními světy.