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 FOR JSON klausul secara otomatis berdasarkan struktur SELECT pernyataan, tentukan AUTO opsi .

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.

PATH Gunakan opsi jika Anda ingin mengontrol output.

Kueri yang menggunakan opsi FOR JSON AUTO harus memiliki klausa FROM.

Berikut adalah beberapa contoh klausa FOR JSON dengan opsi AUTO.

Nota

Ekstensi MSSQL untuk Visual Studio Code dapat memformat hasil JSON secara otomatis (seperti yang terlihat dalam artikel ini) alih-alih menampilkan string yang tidak diformat.

Examples

Sampel kode dalam artikel ini menggunakan database sampel AdventureWorks2025 atau AdventureWorksDW2025, yang dapat Anda unduh dari halaman beranda Sampel dan Proyek Komunitas Microsoft SQL Server.

A. Memformat JSON dari satu tabel

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;

Berikut kumpulan hasilnya.

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

B. Memformat JSON untuk tabel gabungan

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 AS H
     INNER JOIN Sales.SalesOrderDetail AS D
         ON H.SalesOrderID = D.SalesOrderID
FOR JSON AUTO;

Berikut kumpulan hasilnya.

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

C. Gunakan FOR JSON PATH untuk mencocokkan output OTOMATIS

Alih-alih menggunakan FOR JSON AUTO, Anda dapat menumpuk FOR JSON PATH subkueri dalam SELECT pernyataan, 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;

Berikut kumpulan hasilnya.

[{
    "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 JSON sebagai jembatan antara NoSQL dan dunia relasional.