Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (hanya kumpulan SQL tanpa server)
Titik akhir analitik SQL di Microsoft Fabric
Warehouse di Microsoft Fabric
SQL database di Microsoft Fabric
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 ini
AUTO, lihat Memformat output JSON secara otomatis dengan mode AUTO. - Untuk gambaran umum kedua opsi, lihat Memformat hasil kueri sebagai JSON dengan FOR JSON.
Contoh berikut menunjukkan cara menggunakan FOR JSON klausa dengan PATH opsi . Format hasil berlapis dengan menggunakan nama kolom yang dipisahkan titik atau dengan menggunakan kueri berlapis, seperti yang ditunjukkan dalam contoh. Secara default, nilai null tidak disertakan dalam FOR JSON output.
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. 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.
SELECT TOP 5 BusinessEntityID AS Id,
FirstName,
LastName,
Title AS 'Info.Title',
MiddleName AS 'Info.MiddleName'
FROM Person.Person
FOR JSON PATH;
Berikut kumpulan hasilnya.
[{
"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"
}
}]
B. 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 untuk setiap (OrderHeader, OrderDetails) pasangan yang bergabung dengan 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 AS H
INNER JOIN Sales.SalesOrderDetail AS D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON PATH;
Berikut kumpulan hasilnya.
[{
"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 Database Engine
Untuk pengenalan visual dukungan JSON bawaan, lihat JSON sebagai jembatan antara NoSQL dan dunia relasional.