Bagikan melalui


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.

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:

Lihat Juga

Klausul FOR (Transact-SQL)