Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
              Van toepassing op: SQL Server 2016 (13.x) en latere versies 
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (alleen serverloze SQL-pool)
SQL-database in Microsoft Fabric Preview
In de volgende voorbeelden ziet u enkele manieren om de FOR JSON-component en de JSON-uitvoer ervan te gebruiken in SQL Server of in client-apps. Zie Queryresultaten opmaken als JSON met FOR JSON voor meer informatie.
In Fabric Data Warehouse moet FOR JSON de laatste operator in de query zijn en dus niet toegestaan in subquery's, zoals in de voorbeelden in dit artikel.
FOR JSON-uitvoer gebruiken in de variabelen van de SQL Database Engine
De uitvoer van de FOR JSON component is van het type nvarchar(max), zodat u deze kunt toewijzen aan elke variabele, zoals wordt weergegeven in het volgende voorbeeld.
DECLARE @x NVARCHAR(MAX) =
  (SELECT TOP 10 *
     FROM Sales.SalesOrderHeader
     FOR JSON AUTO)  
FOR JSON-uitvoer gebruiken in de door de gebruiker gedefinieerde SQL Database Engine-functies
U kunt door de gebruiker gedefinieerde functies maken die resultatensets opmaken als JSON en deze JSON-uitvoer retourneren. In het volgende voorbeeld wordt een door de gebruiker gedefinieerde functie gemaakt waarmee een aantal detailrijen voor verkooporders worden opgehaald en opgemaakt als een JSON-matrix.
CREATE FUNCTION GetSalesOrderDetails(@salesOrderId int)  
 RETURNS NVARCHAR(MAX)  
AS  
BEGIN  
   RETURN (SELECT UnitPrice, OrderQty  
           FROM Sales.SalesOrderDetail  
           WHERE SalesOrderID = @salesOrderId  
           FOR JSON AUTO)  
END
U kunt deze functie gebruiken in een batch of query, zoals wordt weergegeven in het volgende voorbeeld.
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
Ouder- en kindgegevens samenvoegen in één tabel
In het volgende voorbeeld wordt elke set onderliggende rijen opgemaakt als een JSON-array. De JSON-matrix wordt de waarde van de kolom Details in de bovenliggende tabel.
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  
De gegevens in JSON-kolommen bijwerken
In het volgende voorbeeld ziet u dat u de waarde van een kolom met JSON-tekst kunt bijwerken.
UPDATE SalesOrder  
SET Details =  
     (SELECT TOP 1 UnitPrice, OrderQty  
       FROM Sales.SalesOrderDetail D  
       WHERE D.SalesOrderId = SalesOrder.SalesOrderId  
      FOR JSON AUTO) 
FOR JSON-uitvoer gebruiken in een C#-client-app
In het volgende voorbeeld ziet u hoe u de JSON-uitvoer van een query ophaalt in een StringBuilder-object in een C#-client-app. Stel dat de variabele queryWithForJson de tekst van een SELECT verklaring met een FOR JSON clausule bevat.
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());
            }
        }
    }
}
Meer informatie over JSON in de SQL Database Engine
Zie de volgende video's voor een visuele inleiding tot de ingebouwde JSON-ondersteuning: