Di MySQL, JSON_EXTRACT()
fungsi mengembalikan data dari dokumen JSON. Data aktual yang dikembalikan ditentukan oleh jalur yang Anda berikan sebagai argumen.
Anda memberikan dokumen JSON sebagai argumen pertama, diikuti dengan jalur data yang akan dikembalikan. Anda juga dapat menyediakan beberapa jalur untuk mengembalikan data dari beberapa tempat dalam dokumen.
Sintaks
Sintaksnya seperti ini:
JSON_EXTRACT(json_doc, path[, path] ...)
Dimana json_doc
adalah dokumen JSON dan path
adalah jalur ke nilai yang akan dikembalikan.
Jika mungkin argumen tersebut dapat mengembalikan beberapa nilai, nilai yang cocok akan dibungkus otomatis sebagai array, dalam urutan yang sesuai dengan jalur yang menghasilkannya.
Contoh 1 – Penggunaan Dasar
Berikut ini contoh untuk didemonstrasikan.
SELECT JSON_EXTRACT('{"a": 1, "b": 2, "c": 3}', '$.b') AS 'Result';
Hasil:
+--------+ | Result | +--------+ | 2 | +--------+
Dalam hal ini, kami mengembalikan nilai kunci b
.
Ini contoh lain:
SELECT JSON_EXTRACT('{"Name": "Bart", "Age": 10}', '$.Name') AS 'Result';
Hasil:
+--------+ | Result | +--------+ | "Bart" | +--------+
Contoh 2 – Jalur Tidak Ada
Jika Anda menentukan jalur yang tidak ada, nilai NULL akan dikembalikan.
SELECT JSON_EXTRACT('{"Name": "Homer", "Age": 39}', '$.Gender') AS 'Result';
Hasil:
+--------+ | Result | +--------+ | NULL | +--------+
Anda juga akan mendapatkan nilai NULL jika salah satu argumennya adalah NULL
.
Contoh 3 – Array
Berikut ini contoh penggunaan array.
SELECT JSON_EXTRACT('[1, 2, 3]', '$[2]') AS 'Result';
Hasil:
+--------+ | Result | +--------+ | 3 | +--------+
Array menggunakan penomoran berbasis nol, jadi dalam hal ini, elemen ketiga diganti.
Berikut contoh array lainnya. Kali ini kita mengembalikan nilai dari array bersarang.
SELECT JSON_EXTRACT('[1, 2, [3, 4, 5]]', '$[2][1]') AS 'Result';
Hasil:
+--------+ | Result | +--------+ | 4 | +--------+
Contoh 4 – Beberapa Jalur
Anda dapat menentukan lebih dari satu jalur untuk mengembalikan data dari beberapa tempat dalam dokumen JSON.
Contoh dasar:
SELECT JSON_EXTRACT('[1, 2, 3, 4, 5]', '$[1]', '$[3]') AS 'Result';
Hasil:
+--------+ | Result | +--------+ | [2, 4] | +--------+
Contoh 5 – Dokumen JSON yang Lebih Besar
Berikut ini contoh dengan dokumen JSON yang sedikit lebih besar.
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies') AS 'Result';
Hasil:
+---------------------------------------+ | Result | +---------------------------------------+ | ["Homer", 39, ["Eating", "Sleeping"]] | +---------------------------------------+
Kami juga dapat memilih elemen tertentu dari array jika diperlukan:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_EXTRACT(@data, '$.Person.Name', '$.Person.Age', '$.Person.Hobbies[1]') AS 'Result';
Hasil:
+---------------------------+ | Result | +---------------------------+ | ["Homer", 39, "Sleeping"] | +---------------------------+