Bagikan melalui


Memformat Output JSON Secara Otomatis dengan Mode OTOMATIS

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (hanya kumpulan SQL tanpa server)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft FabricSQL database di Microsoft Fabric

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.

Examples

Contoh 1

Query

Saat kueri hanya mereferensikan satu tabel, hasil klausa 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  

Result

[{
    "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

Query

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   

Result

[{
    "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

Query
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  

Result

[{
    "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 Database Engine

Untuk pengenalan visual dukungan JSON bawaan, lihat video berikut ini: