Mengembalikan data tipe ARRAY, MAP, atau STRUCT berdasarkan string JSON yang ditentukan oleh jsonStr dan format keluaran yang ditentukan oleh schema.
Sintaksis
from_json(<jsonStr>, <schema>)Parameter
jsonStr: Wajib. String JSON yang dimasukkan.
schema: Wajib. Skema dari string JSON. Nilai parameter ini harus dalam format yang sama dengan pernyataan untuk membuat tabel, seperti
array<bigint>,map<string, array<string>>, ataustruct<a:int, b:double, `C`:map<string,string>>.CatatanKunci dalam sebuah struct bersifat peka huruf besar-kecil. Anda juga dapat menentukan struct dalam format
a BIGINT, b DOUBLE, yang setara denganSTRUCT<a:BIGINT, b:DOUBLE>.Tabel berikut menjelaskan pemetaan antara tipe data JSON dan tipe data MaxCompute.
Tipe data JSON
Tipe data MaxCompute
OBJECT
STRUCT, MAP, dan STRING
ARRAY
ARRAY dan STRING
NUMBER
TINYINT, SMALLINT, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, dan STRING
BOOLEAN
BOOLEAN dan STRING
STRING
STRING, CHAR, VARCHAR, BINARY, DATE, dan DATETIME
NULL
Semua tipe
CatatanString JSON tipe OBJECT dan ARRAY diuraikan sebanyak mungkin. Jika tipe data string JSON tidak dipetakan ke tipe data MaxCompute apa pun, string JSON tersebut akan diabaikan. Untuk kemudahan penggunaan, semua tipe data JSON dapat dikonversi menjadi tipe data STRING yang didukung oleh MaxCompute. Saat mengonversi string JSON menjadi nilai tipe FLOAT, DOUBLE, atau DECIMAL, presisi tempat desimal dari nilai tersebut tidak dapat dijamin. Kami menyarankan menggunakan fungsi GET_JSON_OBJECT atau mengonversi string JSON menjadi nilai tipe STRING terlebih dahulu, lalu mengonversi hasilnya menjadi nilai tipe FLOAT, DOUBLE, atau DECIMAL.
Nilai kembali
Mengembalikan nilai tipe ARRAY, MAP, atau STRUCT.
FROM_JSON
Contoh 1: Mengonversi string JSON tertentu menjadi nilai tipe data tertentu. Pernyataan contoh:
-- Nilai kembali adalah {a:1,b:0.8}. select from_json('{"a":1, "b":0.8}', 'a int, b double'); -- Nilai kembali adalah {time:26/08/2015}. select from_json('{"time":"26/08/2015"}', 'time string'); -- Nilai kembali adalah {a:1, b:0.8, c:NULL}. select from_json('{"a":1, "b":0.8}', 'a int, b double, c string'); -- Nilai kembali adalah [1,2,3]. select from_json('[1, 2, 3, "a"]', 'array<bigint>'); -- Nilai kembali adalah {a:1, b:[1,2,3], c:{}, d:v}. select from_json('{"a":1,"b":[1,2,3],"c":{},"d":"v"}', 'map<string, string>');Contoh 2: Gunakan fungsi
map_keysdanfrom_jsonuntuk mendapatkan semua kunci dalam string JSON. Anda juga dapat menggunakan JSON_KEYS untuk tujuan yang sama. Pernyataan contoh:-- Nilai kembali adalah [a, b]. select map_keys(from_json('{"a":1,"b":2}','map<string,string>'));
Fungsi terkait
FROM_JSON adalah fungsi tipe kompleks atau fungsi string.
Untuk informasi lebih lanjut tentang fungsi yang digunakan untuk memproses data tipe data kompleks, seperti ARRAY, MAP, STRUCT, dan JSON, lihat Fungsi Tipe Kompleks.
Untuk informasi lebih lanjut tentang fungsi terkait pencarian dan konversi string, lihat Fungsi String.