Formátujte výsledky dotazu jako JSON pomocí FOR JSON
platí pro:SQL Server
azure SQL Managed Instance
Azure Synapse Analytics (jenom bezserverový fond SQL)
koncový bod analýzy SQL v Microsoft Fabric
Warehouse 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.
Poznámka
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
.
ROOT
Pokud 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 sROOT Option (SQL Server).INCLUDE_NULL_VALUES
Pokud 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 proNULL
hodnoty ve výsledcích dotazu. Další informace naleznete v tématu Zahrnutí hodnot Null v JSON – volba INCLUDE_NULL_VALUES.WITHOUT_ARRAY_WRAPPER
Pokud 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 najdete v tématu Jak FOR JSON nahrazuje speciální znaky a řídicí znaky (SQL Server).
Příklad
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"
}]
Související obsah
- Způsob převodu datových typů SQL Serveru na datové typy JSON (SQL Server)
- Jak příkaz FOR JSON nahrazuje speciální a řídicí znaky (SQL Server)
- Video: JSON jako most mezi NoSQL a relačními světy
- SELECT – klauzule FOR (Transact-SQL)
- použití výstupu FOR JSON v SQL Serveru a v klientských aplikacích (SQL Server)