Memformat hasil kueri sebagai JSON dengan FOR JSON
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)
Format hasil kueri sebagai JSON, atau ekspor data dari SQL Server sebagai JSON, dengan menambahkan FOR JSON
klausa ke SELECT
pernyataan. FOR JSON
Gunakan klausul untuk menyederhanakan aplikasi klien dengan mendelegasikan pemformatan output JSON dari aplikasi ke SQL Server.
Catatan
Azure Data Studio adalah editor kueri yang direkomendasikan untuk kueri JSON karena memformat hasil JSON secara otomatis, seperti yang ditunjukkan dalam artikel ini. SQL Server Management Studio menampilkan string yang tidak diformat.
Memformat hasil kueri
Saat Anda menggunakan FOR JSON
klausul, Anda dapat menentukan struktur output JSON secara eksplisit, atau membiarkan struktur SELECT
pernyataan menentukan output.
Untuk mempertahankan kontrol penuh atas format output JSON, gunakan
FOR JSON PATH
. Anda dapat membuat objek pembungkus dan properti kompleks sarang.Untuk memformat output JSON secara otomatis berdasarkan struktur
SELECT
pernyataan, gunakanFOR JSON AUTO
.
Berikut adalah contoh SELECT
pernyataan dengan FOR JSON
klausul dan outputnya.
Mengontrol output dengan FOR JSON PATH
Dalam PATH
mode, Anda dapat menggunakan sintaks titik - misalnya, Item.Price
- untuk memformat output berlapis.
Berikut adalah contoh kueri yang menggunakan mode dengan FOR JSON
klausaPATH
. Contoh berikut juga menggunakan ROOT
opsi untuk menentukan elemen akar bernama.
Info selengkapnya tentang FOR JSON PATH
Untuk informasi dan contoh yang lebih rinci, lihat Memformat Output JSON Berlapis dengan Mode PATH (SQL Server).
Untuk sintaks dan penggunaan, lihat Klausul FOR (Transact-SQL).
Mengontrol opsi output JSON lainnya
Kontrol output FOR JSON
klausa, menggunakan opsi tambahan berikut.
ROOT
Untuk menambahkan elemen tingkat atas tunggal ke output JSON, tentukan
ROOT
opsi . Jika Anda tidak menentukan opsi ini, output JSON tidak memiliki elemen root. Untuk informasi selengkapnya, lihat Menambahkan Simpul Akar ke Output JSON dengan Opsi ROOT (SQL Server).INCLUDE_NULL_VALUES
Untuk menyertakan nilai null dalam output JSON, tentukan
INCLUDE_NULL_VALUES
opsi . Jika Anda tidak menentukan opsi ini, output tidak menyertakan properti JSON untukNULL
nilai dalam hasil kueri. Untuk informasi selengkapnya, lihat Menyertakan Nilai Null di Opsi JSON - INCLUDE_NULL_VALUES.WITHOUT_ARRAY_WRAPPER
Untuk menghapus tanda kurung siku yang mengelilingi output JSON klausul
FOR JSON
secara default, tentukanWITHOUT_ARRAY_WRAPPER
opsi . Gunakan opsi ini untuk menghasilkan satu objek JSON sebagai output dari hasil satu baris. Jika Anda tidak menentukan opsi ini, output JSON diformat sebagai array - yaitu, output diapit dalam tanda kurung siku. Untuk informasi selengkapnya, lihat Menghapus Kurung Siku dari JSON - opsi WITHOUT_ARRAY_WRAPPER.
Output klausul FOR JSON
Output FOR JSON
klausul memiliki karakteristik berikut:
Kumpulan hasil berisi satu kolom.
- Kumpulan hasil kecil dapat berisi satu baris.
- Kumpulan hasil besar membagi string JSON panjang di beberapa baris.
Secara default, SQL Server Management Studio (SSMS) menggabungkan hasil menjadi satu baris saat pengaturan output adalah Hasil ke Kisi. Bilah status SSMS menampilkan jumlah baris aktual.
Aplikasi klien lain mungkin memerlukan kode untuk merecombine hasil panjang menjadi satu string JSON yang valid dengan menggabungkan konten beberapa baris. Untuk contoh kode ini dalam aplikasi C#, lihat Menggunakan output FOR JSON di aplikasi klien C#.
Hasilnya diformat sebagai array objek JSON.
Jumlah elemen dalam array JSON sama dengan jumlah baris dalam hasil pernyataan SELECT (sebelum klausul FOR JSON diterapkan).
Setiap baris dalam hasil pernyataan SELECT (sebelum klausul FOR JSON diterapkan) menjadi objek JSON terpisah dalam array.
Setiap kolom dalam hasil pernyataan SELECT (sebelum klausul FOR JSON diterapkan) menjadi properti objek JSON.
Nama kolom dan nilainya lolos sesuai dengan sintaks JSON. Untuk informasi selengkapnya, lihat Cara JSON meloloskan karakter khusus dan karakter kontrol (SQL Server).
Contoh
Berikut adalah contoh yang menunjukkan bagaimana FOR JSON
klausul memformat output JSON.
Hasil kueri
A | B | C | D |
---|---|---|---|
10 | 11 | 12 | X |
20 | 21 | 22 | Y |
30 | 31 | 32 | Z |
Output JSON
[{
"A": 10,
"B": 11,
"C": 12,
"D": "X"
}, {
"A": 20,
"B": 21,
"C": 22,
"D": "Y"
}, {
"A": 30,
"B": 31,
"C": 32,
"D": "Z"
}]
Konten terkait
- Bagaimana FOR JSON mengonversi jenis data SQL Server ke jenis data JSON (SQL Server)
- Bagaimana FOR JSON lolos karakter khusus dan karakter kontrol (SQL Server)
- JSON sebagai jembatan antara NoSQL dan dunia relasional
- SELECT - UNTUK Klausul (Transact-SQL)
- Gunakan output FOR JSON di SQL Server dan di aplikasi klien (SQL Server)