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 .
- Untuk informasi selengkapnya tentang opsi AUTO , lihat Memformat Output JSON Secara Otomatis dengan Mode OTOMATIS .
- Untuk gambaran umum kedua opsi, lihat Memformat Hasil Kueri sebagai JSON dengan FOR JSON.
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: