Mengonversi tipe kompleks yang ditentukan expr menjadi string dalam format JSON.
Sintaksis
STRING TO_JSON(<expr>)Parameter
expr: Diperlukan. Ekspresi dengan tipe data kompleks. Tipe data harus berupa ARRAY, MAP, atau STRUCT.
Jika inputnya adalah tipe STRUCT (struct<key1:value1, key2:value2):
Ketika tipe STRUCT dikonversi ke string JSON, semua kunci diubah menjadi huruf kecil.
Jika sebuah
valueadalah NULL, kelompok data yang mengandungvaluetidak disertakan dalam output. Contohnya, jikavalue2adalah NULL,key2:value2tidak disertakan dalam string JSON hasil.Anda dapat menjalankan perintah
SET odps.sql.bigquery.compatible=true;untuk mengaktifkan mode kompatibel BigQuery. Dalam mode ini, jika sebuah value adalah NULL, pasangan kunci-nilai yang sesuai tetap disertakan dalam output. Contohnya, jika value2 adalah NULL, key2:NULL disertakan dalam output.
Nilai kembali
Mengembalikan string dalam format JSON.
Contoh
Contoh 1: Mengonversi tipe kompleks menjadi string JSON. Perintah contoh:
-- Mengembalikan {"a":1,"b":2}. SELECT TO_JSON(NAMED_STRUCT('a', 1, 'b', 2)); -- Mengembalikan {"time":"26/08/2015"}. SELECT TO_JSON(NAMED_STRUCT('time', "26/08/2015")); -- Mengembalikan [{"a":1,"b":2}]. SELECT TO_JSON(ARRAY(NAMED_STRUCT('a', 1, 'b', 2))); -- Mengembalikan {"a":{"b":1}}. SELECT TO_JSON(MAP('a', NAMED_STRUCT('b', 1))); -- Mengembalikan {"a":1}. SELECT TO_JSON(MAP('a', 1)); -- Mengembalikan [{"a":1}]. SELECT TO_JSON(ARRAY((MAP('a', 1))));Contoh 2: Menangani nilai NULL dalam ekspresi tipe STRUCT. Perintah contoh:
-- Mengembalikan {"a":"B"}. Ketika tipe STRUCT dikonversi menjadi string JSON, semua kunci diubah menjadi huruf kecil. SELECT TO_JSON(NAMED_STRUCT("A", "B")); -- Mengembalikan {"k2":"v2"}. Kelompok data yang mengandung nilai NULL tidak disertakan dalam string JSON hasil. SELECT TO_JSON(NAMED_STRUCT("k1", CAST(NULL AS STRING), "k2", "v2"));Contoh 3: Mengonversi ekspresi tipe STRUCT yang mengandung nilai NULL dalam mode kompatibel BigQuery. Perintah contoh:
-- Mengembalikan {"k1":null,"k2":"v2"} SET odps.sql.bigquery.compatible=true; SELECT TO_JSON(named_struct("k1", CAST(NULL AS STRING), "k2", "v2")); -- Mengembalikan {"id":null,"tag":null,"group":null,"success":true} SET odps.sql.bigquery.compatible=true; SELECT TO_JSON(struct(experiment_id AS id,tag AS tag,`group`,`success`)) AS experiment_in_json FROM( SELECT CAST(NULL AS string) AS experiment_id, CAST(NULL AS string) AS tag, CAST(NULL AS string) AS `group`, TRUE AS `success` );