Bagikan melalui


Gunakan output FOR JSON di SQL Server dan di aplikasi klien (SQL Server)

Berlaku untuk: SQL Server 2016 (13.x) dan yang lebih baru Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics (hanya kumpulan SQL tanpa server)

Contoh berikut menunjukkan beberapa cara untuk menggunakan klausul FOR JSON dan output JSON-nya di SQL Server atau di aplikasi klien.

Menggunakan output FOR JSON dalam variabel SQL Server

Output klausul FOR JSON berjenis NVARCHAR(MAX), sehingga Anda dapat menetapkannya ke variabel apa pun, seperti yang ditunjukkan dalam contoh berikut.

DECLARE @x NVARCHAR(MAX) =
  (SELECT TOP 10 *
     FROM Sales.SalesOrderHeader
     FOR JSON AUTO)  

Gunakan output FOR JSON dalam fungsi yang ditentukan pengguna SQL Server

Anda dapat membuat fungsi yang ditentukan pengguna yang memformat tataan hasil sebagai JSON dan mengembalikan output JSON ini. Contoh berikut membuat fungsi yang ditentukan pengguna yang mengambil beberapa baris detail pesanan penjualan dan memformatnya sebagai array 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

Anda bisa menggunakan fungsi ini dalam batch atau kueri, seperti yang diperlihatkan dalam contoh berikut.

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

Menggabungkan data induk dan anak ke dalam satu tabel

Dalam contoh berikut, setiap set baris anak diformat sebagai array JSON. Array JSON menjadi nilai kolom Detail dalam tabel induk.

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  

Memperbarui data di kolom JSON

Contoh berikut menunjukkan bahwa Anda dapat memperbarui nilai kolom yang berisi teks JSON.

UPDATE SalesOrder  
SET Details =  
     (SELECT TOP 1 UnitPrice, OrderQty  
       FROM Sales.SalesOrderDetail D  
       WHERE D.SalesOrderId = SalesOrder.SalesOrderId  
      FOR JSON AUTO) 

Menggunakan output FOR JSON di aplikasi klien C#

Contoh berikut menunjukkan cara mengambil output JSON kueri ke objek StringBuilder di aplikasi klien C#. Asumsikan bahwa variabel queryWithForJson berisi teks pernyataan SELECT dengan klausa 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());
            }
        }
    }
}

Pelajari selengkapnya tentang JSON di SQL Server dan Azure SQL Database

Video Microsoft

Catatan

Beberapa tautan video di bagian ini mungkin tidak berfungsi saat ini. Microsoft memigrasikan konten sebelumnya di Channel 9 ke platform baru. Kami akan memperbarui tautan saat video dimigrasikan ke platform baru.

Untuk pengenalan visual dukungan JSON bawaan di SQL Server dan Azure SQL Database, lihat video berikut ini:

Lihat Juga

Format Hasil Kueri sebagai JSON dengan FOR JSON (SQL Server)