Použití výstupu FOR JSON v SQL Serveru a v klientských aplikacích (SQL Server)
platí pro: SQL Server 2016 (13.x) a novější
Azure SQL Database
azure SQL Managed Instance
Azure Synapse Analytics (jenom bezserverový fond SQL)
Následující příklady ukazují některé způsoby použití klauzule FOR JSON a výstupu JSON v SQL Serveru nebo v klientských aplikacích.
Použití výstupu FOR JSON v proměnných SQL Serveru
Výstup klauzule FOR JSON je typu NVARCHAR(MAX), takže ho můžete přiřadit libovolné proměnné, jak je znázorněno v následujícím příkladu.
DECLARE @x NVARCHAR(MAX) =
(SELECT TOP 10 *
FROM Sales.SalesOrderHeader
FOR JSON AUTO)
Použití výstupu FOR JSON v uživatelem definovaných funkcích SQL Serveru
Můžete vytvořit uživatelem definované funkce, které formátuje sady výsledků ve formátu JSON, a vrátit tento výstup JSON. Následující příklad vytvoří uživatelem definovanou funkci, která načte některé řádky podrobností prodejní objednávky a naformátuje je jako pole JSON.
CREATE FUNCTION GetSalesOrderDetails(@salesOrderId int)
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN (SELECT UnitPrice, OrderQty
FROM Sales.SalesOrderDetail
WHERE SalesOrderID = @salesOrderId
FOR JSON AUTO)
END
Tuto funkci můžete použít v dávce nebo dotazu, jak je znázorněno v následujícím příkladu.
DECLARE @x NVARCHAR(MAX) = dbo.GetSalesOrderDetails(43659)
PRINT dbo.GetSalesOrderDetails(43659)
SELECT TOP 10
H.*, dbo.GetSalesOrderDetails(H.SalesOrderId) AS Details
FROM Sales.SalesOrderHeader H
Sloučení nadřazených a podřízených dat do jedné tabulky
V následujícím příkladu se každá sada podřízených řádků naformátuje jako pole JSON. Pole JSON se stane hodnotou sloupce Details v nadřazené tabulce.
SELECT TOP 10 SalesOrderId, OrderDate,
(SELECT TOP 3 UnitPrice, OrderQty
FROM Sales.SalesOrderDetail D
WHERE H.SalesOrderId = D.SalesOrderID
FOR JSON AUTO) AS Details
INTO SalesOrder
FROM Sales.SalesOrderHeader H
Aktualizace dat ve sloupcích JSON
Následující příklad ukazuje, že můžete aktualizovat hodnotu sloupce, který obsahuje text JSON.
UPDATE SalesOrder
SET Details =
(SELECT TOP 1 UnitPrice, OrderQty
FROM Sales.SalesOrderDetail D
WHERE D.SalesOrderId = SalesOrder.SalesOrderId
FOR JSON AUTO)
Použití výstupu FOR JSON v klientské aplikaci jazyka C#
Následující příklad ukazuje, jak načíst výstup JSON dotazu do objektu StringBuilder v klientské aplikaci jazyka C#. Předpokládejme, že proměnná queryWithForJson
obsahuje text příkazu SELECT s klauzulí FOR JSON.
var queryWithForJson = "SELECT ... FOR JSON";
using(var conn = new SqlConnection("<connection string>"))
{
using(var cmd = new SqlCommand(queryWithForJson, conn))
{
conn.Open();
var jsonResult = new StringBuilder();
var reader = cmd.ExecuteReader();
if (!reader.HasRows)
{
jsonResult.Append("[]");
}
else
{
while (reader.Read())
{
jsonResult.Append(reader.GetValue(0).ToString());
}
}
}
}
Další informace o FORMÁTU JSON v SQL Serveru a Azure SQL Database
Microsoft videa
Poznámka
Některé odkazy na video v této části nemusí v tuto chvíli fungovat. Microsoft migruje obsah dříve na channel 9 na novou platformu. Po migraci videí na novou platformu aktualizujeme odkazy.
Pro vizuální úvod k integrované podpoře JSON v SQL Serveru a Azure SQL Database, viz následující videa:
Viz také
Formátování výsledků dotazu jako JSON pomocí funkce FOR JSON (SQL Server)