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ší
Azure SQL Database
azure SQL Managed Instance
Azure Synapse Analytics (jenom bezserverový fond SQL)
Pokud chcete formátovat výstup klauzule FOR JSON automaticky na základě struktury příkazu SELECT, zadejte možnost AUTO.
Když zadáte možnost AUTOMATICKÉ, formát výstupu JSON se automaticky určí na základě pořadí sloupců v seznamu SELECT a jejich zdrojových tabulek. Tento formát nelze změnit.
Alternativou je použití možnosti PATH k udržení kontroly nad výstupem.
- Další informace o možnosti PATH naleznete v tématu Formát vnořeného výstupu JSON s režimem PATH.
- Přehled obou možností najdete v tématu Formátovat výsledky dotazu jako JSON sFOR JSON .
Dotaz, který používá možnost FOR JSON AUTO, musí mít klauzuli FROM.
Tady je několik příkladů klauzule FOR JSON s možností AUTO. 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říklady
Příklad 1
dotazu
Pokud dotaz odkazuje pouze na jednu tabulku, výsledky klauzule FOR JSON AUTO jsou podobné výsledkům příkazu FOR JSON PATH . V tomto případě PRO JSON AUTO nevytvoří vnořené objekty. Jediným rozdílem je, že FUNKCE JSON AUTO vypíše aliasy oddělené tečkami (například Info.MiddleName
v následujícím příkladu) jako klíče s tečkami, ne jako vnořené objekty.
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON AUTO
výsledek
[{
"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"
}]
Příklad 2
dotazu
Při spojení tabulek se sloupce v první tabulce vygenerují jako vlastnosti kořenového objektu. Sloupce ve druhé tabulce se generují jako vlastnosti vnořeného objektu. Název tabulky nebo alias druhé tabulky (například D
v následujícím příkladu) se používá jako název vnořeného pole.
SELECT TOP 2 SalesOrderNumber,
OrderDate,
UnitPrice,
OrderQty
FROM Sales.SalesOrderHeader H
INNER JOIN Sales.SalesOrderDetail D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON AUTO
výsledek
[{
"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
}]
}]
Příklad 3
dotazu
Místo použití klauzule FOR JSON AUTO můžete vnořit poddotaz FOR JSON PATH do příkazu SELECT, jak je znázorněno v následujícím příkladu. Tento příklad vypíše stejný výsledek jako předchozí příklad.
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
výsledek
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO4390",
"D": [{
"UnitPrice": 24.99
}]
}]
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:
Viz také
klauzule FOR (Transact-SQL)