Format Output JSON Secara Otomatis dengan Mode OTOMATIS (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 memformat output klausa FOR JSON secara otomatis berdasarkan struktur pernyataan SELECT , tentukan opsi AUTO .
Saat Anda menentukan opsi AUTO , format output JSON secara otomatis ditentukan berdasarkan urutan kolom dalam daftar SELECT dan tabel sumbernya. Anda tidak dapat mengubah format ini.
Alternatifnya adalah menggunakan opsi PATH untuk mempertahankan kontrol atas output.
- Untuk informasi selengkapnya tentang opsi PATH , lihat Memformat Output JSON Berlapis dengan Mode PATH.
- Untuk gambaran umum kedua opsi, lihat Memformat Hasil Kueri sebagai JSON dengan FOR JSON.
Kueri yang menggunakan opsi FOR JSON AUTO harus memiliki klausa FROM .
Berikut adalah beberapa contoh klausa FOR JSON dengan opsi AUTO . 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
Contoh 1
Kueri
Saat kueri hanya mereferensikan satu tabel, hasil klausul FOR JSON AUTO mirip dengan hasil FOR JSON PATH . Dalam hal ini, FOR JSON AUTO tidak membuat objek berlapis. Satu-satunya perbedaan adalah bahwa FOR JSON AUTO menghasilkan alias yang dipisahkan titik (misalnya, Info.MiddleName
dalam contoh berikut) sebagai kunci dengan titik, bukan sebagai objek berlapis.
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON AUTO
Hasil
[{
"Id": 1,
"FirstName": "Ken",
"LastName": "Sánchez",
"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.",
"Info.MiddleName": "A"
}]
Contoh 2
Kueri
Saat Anda menggabungkan tabel, kolom dalam tabel pertama dihasilkan sebagai properti objek akar. Kolom dalam tabel kedua dihasilkan sebagai properti objek berlapis. Nama tabel atau alias tabel kedua (misalnya, D
dalam contoh berikut) digunakan sebagai nama array berlapis.
SELECT TOP 2 SalesOrderNumber,
OrderDate,
UnitPrice,
OrderQty
FROM Sales.SalesOrderHeader H
INNER JOIN Sales.SalesOrderDetail D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON AUTO
Hasil
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO43659",
"D": [{
"UnitPrice": 34.40
}, {
"UnitPrice": 134.24,
"OrderQty": 5
}]
}]
Contoh 3
Kueri
Alih-alih menggunakan FOR JSON AUTO, Anda dapat menumpuk subkueri FOR JSON PATH dalam pernyataan SELECT, seperti yang ditunjukkan dalam contoh berikut. Contoh ini menghasilkan hasil yang sama dengan contoh sebelumnya.
SELECT TOP 2
SalesOrderNumber,
OrderDate,
(SELECT UnitPrice, OrderQty
FROM Sales.SalesOrderDetail AS D
WHERE H.SalesOrderID = D.SalesOrderID
FOR JSON PATH) AS D
FROM Sales.SalesOrderHeader AS H
FOR JSON PATH
Hasil
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO4390",
"D": [{
"UnitPrice": 24.99
}]
}]
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: