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
Naformátujte výsledky dotazu jako JSON nebo exportujte data z SQL Serveru jako JSON přidáním klauzule FOR JSON do příkazu SELECT. Pomocí klauzule FOR JSON zjednodušte klientské aplikace delegováním formátování výstupu JSON z aplikace na SQL Server.
Note
Azure Data Studio je doporučeným editorem dotazů pro dotazy JSON, protože automaticky formátuje výsledky JSON, jak je znázorněno v tomto článku. SQL Server Management Studio zobrazí neformátovaný řetězec.
V datovém skladu fabric musí být FOR JSON posledním operátorem v dotazu, takže v poddotazech není povolený.
Formátování výsledků dotazu
Při použití klauzule FOR JSON můžete explicitně zadat strukturu výstupu JSON nebo nechat strukturu příkazu SELECT určit výstup.
Pokud chcete zachovat úplnou kontrolu nad formátem výstupu JSON, použijte
FOR JSON PATH. Můžete vytvořit objekty obálky a vnořit složité vlastnosti.Pokud chcete formátovat výstup JSON automaticky na základě struktury příkazu
SELECT, použijteFOR JSON AUTO.
Tady je příklad příkazu SELECT s klauzulí FOR JSON a jejím výstupem.
- pro JSON PATH
- pro JSON automatické
Řízení výstupu pomocí příkazu FOR JSON PATH
V PATH režimu můžete k formátování vnořeného výstupu použít tečkovanou syntaxi , například Item.Price.
Tady je ukázkový dotaz, který používá režim PATH s klauzulí FOR JSON. Následující příklad také používá možnost ROOT k zadání pojmenovaného kořenového elementu.
Další informace o příkazu FOR JSON PATH
Podrobnější informace a příklady najdete v tématu Formát vnořeného výstupu JSON s režimem PATH.
Syntaxi a použití najdete v tématu SELECT – klauzule FOR (Transact-SQL).
Řízení dalších možností výstupu JSON
Pomocí následujících dodatečných možností můžete řídit výstup klauzule FOR JSON.
ROOTPokud chcete do výstupu JSON přidat jeden element nejvyšší úrovně, zadejte možnost
ROOT. Pokud tuto možnost nezadáte, výstup JSON nemá kořenový prvek. Další informace najdete v tématu Přidání kořenového uzlu do výstupu JSON s možností ROOT.INCLUDE_NULL_VALUESPokud chcete do výstupu JSON zahrnout hodnoty null, zadejte možnost
INCLUDE_NULL_VALUES. Pokud tuto možnost nezadáte, výstup neobsahuje vlastnosti JSON proNULLhodnoty ve výsledcích dotazu. Další informace naleznete v tématu Zahrnutí hodnot Null v JSON – volba INCLUDE_NULL_VALUES.WITHOUT_ARRAY_WRAPPERPokud chcete ve výchozím nastavení odebrat hranaté závorky, které obklopují výstup JSON klauzule
FOR JSON, zadejte možnostWITHOUT_ARRAY_WRAPPER. Tato možnost slouží k vygenerování jednoho objektu JSON jako výstupu z výsledku s jedním řádkem. Pokud tuto možnost nezadáte, výstup JSON se naformátuje jako pole – to znamená, že výstup je uzavřený v hranatých závorkách. Další informace naleznete v Odebrání hranatých závorek z JSON – možnost WITHOUT_ARRAY_WRAPPER.
Výstup klauzule FOR JSON
Výstup klauzule FOR JSON má následující charakteristiky:
Sada výsledků obsahuje jeden sloupec.
- Malá sada výsledků může obsahovat jeden řádek.
- Velká sada výsledků rozdělí dlouhý řetězec JSON napříč více řádky.
Sql Server Management Studio (SSMS) ve výchozím nastavení zřetězí výsledky do jednoho řádku, když je nastavení výstupu Výsledky do mřížky. Stavový řádek SSMS zobrazuje skutečný počet řádků.
Jiné klientské aplikace mohou vyžadovat, aby kód rekombinoval dlouhé výsledky do jednoho platného řetězce JSON zřetězením obsahu více řádků. Příklad tohoto kódu v aplikaci jazyka C# najdete v tématu Použití výstupu FOR JSON v klientské aplikaci jazyka C#.
Výsledky jsou formátovány jako pole objektů JSON.
Počet prvků v poli JSON se rovná počtu řádků ve výsledcích příkazu SELECT (před použití klauzule FOR JSON).
Každý řádek ve výsledcích příkazu SELECT (před použitím klauzule FOR JSON) se stane samostatným objektem JSON v poli.
Každý sloupec ve výsledcích příkazu SELECT (před použití klauzule FOR JSON) se stane vlastností objektu JSON.
Názvy sloupců i jejich hodnoty se eskapují podle syntaxe JSON. Další informace naleznete v tématu Jak FOR JSON nahrazuje speciální znaky a řídicí znaky.
Example
Tady je příklad, který ukazuje, jak klauzule FOR JSON formátuje výstup JSON.
Výsledky dotazu
| A | B | C | D |
|---|---|---|---|
| 10 | 11 | 12 | X |
| 20 | 21 | 22 | Y |
| 30 | 31 | 32 | Z |
Výstup JSON
[{
"A": 10,
"B": 11,
"C": 12,
"D": "X"
}, {
"A": 20,
"B": 21,
"C": 22,
"D": "Y"
}, {
"A": 30,
"B": 31,
"C": 32,
"D": "Z"
}]