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 automaticky formátovat výstup FOR JSON klauzule na základě struktury SELECT příkazu, zadejte AUTO možnost.
Při zadání AUTO možnosti se formát výstupu JSON automaticky určí na základě pořadí sloupců v seznamu SELECT a jejich zdrojových tabulek. Tento formát nelze změnit.
PATH Tuto možnost použijte, pokud chcete řídit výstup.
- Další informace o této možnosti najdete v tématu Formátování vnořeného
PATHvýstupu JSON s režimem PATH. - Přehled obou možností najdete v tématu Formátování výsledků dotazu jako JSON pomocí FOR JSON.
Dotaz, který používá možnost FOR JSON AUTO , musí mít klauzuli FROM .
Tady je několik příkladů FOR JSON klauzule s AUTO možností.
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 nebo AdventureWorksDW2025, kterou si můžete stáhnout z repozitáře GitHub AdventureWorks2025.
A. Formátování JSON z jedné tabulky
Pokud dotaz odkazuje pouze na jednu tabulku, výsledky FOR JSON AUTO klauzule jsou podobné výsledkům FOR JSON PATH. V tomto případě FOR JSON AUTO nevytvoří vnořené objekty. Jediným rozdílem je, že FOR JSON AUTO výstup aliasů oddělených tečkami (například Info.MiddleName v následujícím příkladu) používá klíče s tečkami, nikoli 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;
Tady je soubor výsledků.
[{
"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"
}]
B. Formát JSON pro spojené tabulky
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 AS H
INNER JOIN Sales.SalesOrderDetail AS D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON AUTO;
Tady je soubor výsledků.
[{
"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
}]
}]
C. Použijte FOR JSON PATH pro sladění s výstupem generovaným módem AUTO
Místo použití FOR JSON AUTOmůžete vnořit FOR JSON PATH poddotaz v SELECT příkazu, 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;
Tady je soubor výsledků.
[{
"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 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.