Bagikan melalui


Format Output JSON Berlapis dengan Mode PATH (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)

Untuk mempertahankan kontrol penuh atas output klausa FOR JSON , tentukan opsi PATH .

Mode PATH memungkinkan Anda membuat objek pembungkus dan properti kompleks sarang. Hasilnya diformat sebagai array objek JSON.

Alternatifnya adalah menggunakan opsi AUTO untuk memformat output secara otomatis berdasarkan struktur pernyataan SELECT .

Berikut adalah beberapa contoh klausa FOR JSON dengan opsi PATH . Format hasil berlapis dengan menggunakan nama kolom yang dipisahkan titik atau dengan menggunakan kueri berlapis, seperti yang ditunjukkan dalam contoh berikut. Secara default, nilai null tidak disertakan dalam output FOR JSON . Azure Data Studio adalah editor kueri yang direkomendasikan untuk kueri JSON karena memformat hasil JSON secara otomatis (seperti yang terlihat dalam artikel ini) alih-alih menampilkan string datar.

Contoh - Nama kolom yang dipisahkan titik

Kueri berikut memformat lima baris pertama dari tabel AdventureWorks Person sebagai JSON.

Klausa FOR JSON PATH menggunakan alias kolom atau nama kolom untuk menentukan nama kunci dalam output JSON. Jika alias berisi titik-titik, opsi PATH membuat objek berlapis.

Kueri

SELECT TOP 5   
       BusinessEntityID As Id,  
       FirstName, LastName,  
       Title As 'Info.Title',  
       MiddleName As 'Info.MiddleName'  
   FROM Person.Person  
   FOR JSON PATH   

Hasil

[{
    "Id": 1,
    "FirstName": "Ken",
    "LastName": "Sanchez",
    "Info": {
        "MiddleName": "J"
    }
}, {
    "Id": 2,
    "FirstName": "Terri",
    "LastName": "Duffy",
    "Info": {
        "MiddleName": "Lee"
    }
}, {
    "Id": 3,
    "FirstName": "Roberto",
    "LastName": "Tamburello"
}, {
    "Id": 4,
    "FirstName": "Rob",
    "LastName": "Walters"
}, {
    "Id": 5,
    "FirstName": "Gail",
    "LastName": "Erickson",
    "Info": {
        "Title": "Ms.",
        "MiddleName": "A"
    }
}]

Contoh - Beberapa tabel

Jika Anda mereferensikan lebih dari satu tabel dalam kueri, FOR JSON PATH menumpuk setiap kolom menggunakan aliasnya. Kueri berikut membuat satu objek JSON per pasangan (OrderHeader, OrderDetails) yang bergabung dalam kueri.

Kueri

SELECT TOP 2 H.SalesOrderNumber AS 'Order.Number',  
        H.OrderDate AS 'Order.Date',  
        D.UnitPrice AS 'Product.Price',  
        D.OrderQty AS 'Product.Quantity'  
FROM Sales.SalesOrderHeader H  
   INNER JOIN Sales.SalesOrderDetail D  
     ON H.SalesOrderID = D.SalesOrderID  
FOR JSON PATH   

Hasil

[{
    "Order": {
        "Number": "SO43659",
        "Date": "2011-05-31T00:00:00"
    },
    "Product": {
        "Price": 2024.9940,
        "Quantity": 1
    }
}, {
    "Order": {
        "Number": "SO43659"
    },
    "Product": {
        "Price": 2024.9940
    }
}]

Pelajari selengkapnya tentang JSON di SQL Server dan Azure SQL Database

Video Microsoft

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

Lihat Juga

Klausul FOR (Transact-SQL)