Simple Log Service (SLS) menyediakan fungsi untuk mengekstraksi dan mengonversi data terstruktur JSON, XML, dan Protobuf selama transformasi data.
Fungsi
|
Kategori |
Fungsi |
Deskripsi |
|
JSON |
Mengekstraksi atau menghitung nilai dari ekspresi JSON menggunakan sintaks JMESPath. |
|
|
Mengurai nilai menjadi objek JSON. |
||
|
XML |
Mengonversi data XML ke JSON. |
json_select
Mengekstraksi atau menghitung nilai dari ekspresi JSON menggunakan sintaks JMESPath.
-
Sintaks
json_select(value, jmes, default=None, restrict=False) -
Parameter
Parameter
Tipe
Wajib
Deskripsi
value
String, JSON
Ya
Ekspresi JSON atau bidang tempat mengekstraksi data.
jmes
String
Ya
Ekspresi JMESPath yang menentukan bidang yang akan diekstraksi.
default
String
Tidak
Nilai cadangan jika bidang yang ditentukan tidak ada. Default: None (tidak mengembalikan nilai).
restrict
Bool
Tidak
Apakah akan mengaktifkan mode terbatas ketika nilai yang diekstraksi bukan JSON yang valid. Default: False.
-
False: Mengabaikan error dan melanjutkan transformasi. Mengembalikan nilai default.
-
True: Melaporkan error, menghentikan transformasi, dan membuang log tersebut.
-
-
Respons
Nilai yang diekstraksi.
-
Contoh
-
Contoh 1: Ekstraksi nilai elemen name dari bidang content.
-
Log mentah
content: {"name": "xiaoming", "age": 10} -
Aturan transformasi
e_set("json_filter",json_select(v("content"), "name")) -
Hasil
content: {"name": "xiaoming", "age": 10} json_filter: xiaoming
-
-
Contoh 2: Ekstraksi semua nilai elemen name dari bidang content.
-
Log mentah
content: {"name": ["xiaoming", "xiaowang", "xiaoli"], "age": 10} -
Aturan transformasi
e_set("json_filter", json_select(v("content"), "name[*]")) -
Hasil
content: {"name": ["xiaoming", "xiaowang", "xiaoli"], "age": 10} json_filter: ["xiaoming", "xiaowang", "xiaoli"]
-
-
Contoh 3: Ekstraksi elemen name3. Jika tidak ada, kembalikan nilai default.
-
Log mentah
content: {"name": "xiaoming", "age": 10} -
Aturan transformasi
e_set("json_filter", json_select(v("content"), "name3", default="None")) -
Hasil
content: {"name": "xiaoming", "age": 10} json_filter: None
-
-
Contoh 4: Ekstraksi elemen name-test (mengandung tanda hubung) dari bidang content.
-
Log mentah
content: {"name": {"name-test":"xiaoming"}, "age": 10} -
Aturan transformasi
e_set("json_filter", json_select(v("content"), 'name."name-test"', default=None)) -
Hasil
content: {"name": {"name-test":"xiaoming"}, "age": 10} json_filter: xiaoming
-
-
Contoh 5: Ekstraksi elemen name-test (mengandung tanda hubung). Jika tidak ada, tidak ada bidang yang dikembalikan.
-
Log mentah
content: {"name": {"name.test":"xiaoming"}, "age": 10} -
Aturan transformasi
e_set("json_filter", json_select(v("content"), 'name."name-test"', default=None)) -
Hasil
content: {"name": {"name-test":"xiaoming"}, "age": 10}
-
-
json_parse
Mengurai nilai menjadi objek JSON.
-
Sintaks
json_parse(value, default=None, restrict=False) -
Parameter
Parameter
Type
Wajib
Deskripsi
value
String
Ya
Bidang yang akan diurai menjadi objek JSON.
default
String
Tidak
Nilai cadangan jika bidang tidak ada. Default: None (tidak mengembalikan nilai).
restrict
Bool
Tidak
Apakah akan mengaktifkan mode terbatas ketika nilai bukan JSON yang valid. Default: False.
-
False: Mengabaikan error dan melanjutkan transformasi. Mengembalikan nilai default.
-
True: Melaporkan error, menghentikan transformasi, dan membuang log tersebut.
-
-
Respons
Objek JSON yang telah diurai.
-
Contoh
-
Contoh 1: Urai nilai bidang content menjadi objek JSON.
-
Log mentah
content: {"abc": 123, "xyz": "test" } -
Aturan transformasi
e_set("json", json_parse(v("content"))) -
Hasil
content: {"abc": 123, "xyz": "test" } json: {"abc": 123, "xyz": "test"}
-
-
Contoh 2: Urai bidang content. Jika nilainya bukan JSON yang valid, kembalikan nilai default.
-
Log mentah
content: this is not json -
Aturan transformasi
e_set("json", json_parse(v("content"), default="FFF", restrict=False)) -
Hasil
content: this is not json json: FFF
-
-
xml_to_json
Mengonversi data XML ke JSON.
-
Sintaks
xml_to_json(source) -
Parameter
Parameter
Tipe
Wajib
Deskripsi
source
String
Ya
Bidang XML yang akan dikonversi.
-
Respons
Data JSON hasil konversi.
-
Contoh
-
Log mentah
str : <data><country name="Liechtenstein"><rank>1</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country><country name="Singapore"><rank>4</rank><year>2011</year><gdppc>59900</gdppc><neighbor name="Malaysia" direction="N"/></country><country name="Panama"><rank>68</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="Costa Rica" direction="W"/><neighbor name="Colombia" direction="E"/></country></data> -
Aturan transformasi
e_set("str_json",xml_to_json(v("str"))) -
Hasil
str:<data><country name="Liechtenstein"><rank>1</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country><country name="Singapore"><rank>4</rank><year>2011</year><gdppc>59900</gdppc><neighbor name="Malaysia" direction="N"/></country><country name="Panama"><rank>68</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="Costa Rica" direction="W"/><neighbor name="Colombia" direction="E"/></country></data> str_json:{"data": {"country": [{"@name": "Liechtenstein", "rank": "1", "year": "2008", "gdppc": "141100", "neighbor": [{"@name": "Austria", "@direction": "E"}, {"@name": "Switzerland", "@direction": "W"}]}, {"@name": "Singapore", "rank": "4", "year": "2011", "gdppc": "59900", "neighbor": {"@name": "Malaysia", "@direction": "N"}}, {"@name": "Panama", "rank": "68", "year": "2011", "gdppc": "13600", "neighbor": [{"@name": "Costa Rica", "@direction": "W"}, {"@name": "Colombia", "@direction": "E"}]}]}}
-