Ekspresi Jalur JSON (SQL Server)

Berlaku untuk: SQL Server 2016 (13.x) dan yang lebih baru Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (hanya kumpulan SQL tanpa server)

Gunakan ekspresi jalur JSON untuk mereferensikan properti objek JSON.

Anda harus memberikan ekspresi jalur saat memanggil fungsi berikut.

  • Saat Anda memanggil OPENJSON untuk membuat tampilan relasional data JSON. Untuk informasi selengkapnya, lihat OPENJSON (Transact-SQL).

  • Saat Anda memanggil JSON_VALUE untuk mengekstrak nilai dari teks JSON. Untuk informasi selengkapnya, lihat JSON_VALUE (Transact-SQL).

  • Saat Anda memanggil JSON_QUERY untuk mengekstrak objek JSON atau array. Untuk informasi selengkapnya, lihat JSON_QUERY (Transact-SQL).

  • Saat Anda memanggil JSON_MODIFY untuk memperbarui nilai properti dalam string JSON. Untuk informasi selengkapnya, lihat JSON_MODIFY (Transact-SQL).

Bagian dari ekspresi jalur

Ekspresi jalur memiliki dua komponen.

  1. Mode jalur opsional, dengan nilai lax atau ketat.

  2. Jalan itu sendiri.

Mode jalur

Di awal ekspresi jalur, secara opsional deklarasikan mode jalur dengan menentukan laks kata kunci atau ketat. Defaultnya adalah lax.

  • Dalam mode laks , fungsi mengembalikan nilai kosong jika ekspresi jalur berisi kesalahan. Misalnya, jika Anda meminta nilai $.name, dan teks JSON tidak berisi kunci nama , fungsi mengembalikan null, tetapi tidak menimbulkan kesalahan.

  • Dalam mode ketat , fungsi menimbulkan kesalahan jika ekspresi jalur berisi kesalahan.

Kueri berikut secara eksplisit menentukan lax mode dalam ekspresi jalur.

DECLARE @json NVARCHAR(MAX);
SET @json=N'{ ... }';

SELECT * FROM OPENJSON(@json, N'lax $.info');

Jalur

Setelah deklarasi mode jalur opsional, tentukan jalur itu sendiri.

  • Tanda dolar ($) mewakili item konteks.

  • Jalur properti adalah sekumpulan langkah jalur. Langkah-langkah jalur dapat berisi elemen dan operator berikut.

    • Nama kunci. Misalnya, $.name dan $."first name". Jika nama kunci dimulai dengan tanda dolar atau berisi karakter khusus seperti operator spasi atau titik(.), kelilingi dengan tanda kutip.

    • Elemen array. Contohnya, $.product[3]. Array berbasis nol.

    • Operator titik (.) menunjukkan anggota objek. Misalnya, dalam $.people[1].surname, surname adalah anak dari people.

Contoh

Contoh di bagian ini mereferensikan teks JSON berikut.

{
    "people": [{
        "name": "John",
        "surname": "Doe"
    }, {
        "name": "Jane",
        "surname": null,
        "active": true
    }]
}

Tabel berikut ini memperlihatkan beberapa contoh ekspresi jalur.

Ekspresi jalur Value
$.people[0].name John
$.people[1] { "name": "Jane", "surname": null, "active": true }
$.people[1].nama keluarga nihil
$ { "people": [ { "name": "John", "surname": "Doe" },
{ "name": "Jane", "surname": null, "active": true } ] }

Cara fungsi bawaan menangani jalur duplikat

Jika teks JSON berisi properti duplikat - misalnya, dua kunci dengan nama yang sama pada tingkat yang sama - fungsi JSON_VALUE dan JSON_QUERY hanya mengembalikan nilai pertama yang cocok dengan jalur. Untuk mengurai objek JSON yang berisi kunci duplikat dan mengembalikan semua nilai, gunakan OPENJSON, seperti yang ditunjukkan dalam contoh berikut.

DECLARE @json NVARCHAR(MAX);
SET @json=N'{"person":{"info":{"name":"John", "name":"Jack"}}}';

SELECT value
  FROM OPENJSON(@json,'$.person.info');

Pelajari selengkapnya tentang JSON di SQL Server dan Azure SQL Database

Video Microsoft

Catatan

Beberapa tautan video di bagian ini mungkin tidak berfungsi saat ini. Microsoft memigrasikan konten sebelumnya di Channel 9 ke platform baru. Kami akan memperbarui tautan saat video dimigrasikan ke platform baru.

Untuk pengenalan visual dukungan JSON bawaan di SQL Server dan Azure SQL Database, lihat video berikut ini:

Lihat Juga

OPENJSON (Transact-SQL)
JSON_VALUE (T-SQL)
JSON_QUERY (T-SQL)