Baca dalam bahasa Inggris

Bagikan melalui


Memformat hasil kueri sebagai JSON dengan FOR JSON

Berlaku untuk: SQL Server Azure SQL Managed Instance Azure Synapse Analytics (hanya kumpulan SQL tanpa server) Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

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.

Di Gudang Data Fabric, FOR JSON harus menjadi operator terakhir dalam kueri, sehingga tidak diizinkan di dalam subkueri.

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, gunakan FOR JSON AUTO.

Berikut adalah contoh pernyataan SELECT dengan klausul FOR JSON dan outputnya.

Diagram memperlihatkan cara kerja FOR JSON.

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 PATH dengan klausa FOR JSON. Contoh berikut juga menggunakan ROOT opsi untuk menentukan elemen akar bernama.

Diagram alur keluaran FOR JSON.

Info selengkapnya tentang FOR JSON PATH

Untuk informasi dan contoh yang lebih rinci, lihat Format Output JSON Berlapis dengan Mode PATH.

Untuk sintaks dan penggunaan, lihat SELECT - FOR Clause (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 untuk NULL 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 dari klausul FOR JSON secara default, tentukan opsi WITHOUT_ARRAY_WRAPPER. 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 lebih lanjut, lihat Menghapus Kurung Siku dari JSON - WITHOUT_ARRAY_WRAPPER Option.

Keluaran dari klausul FOR JSON

Keluaran dari FOR JSON klausul memiliki karakteristik berikut:

  1. 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#.

        Cuplikan layar output FOR JSON di SQL Server Management Studio.

  2. 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.

  3. Nama-nama kolom dan nilainya diekstrapolasi 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"
}]