Topik ini menjelaskan sintaksis umum JMESPath dan memberikan contoh penggunaannya.
JMESPath adalah bahasa query dan komputasi tingkat lanjut untuk JSON. Anda dapat menggunakan JMESPath untuk mengekstrak, menghitung, dan mentransformasi data JSON. Untuk informasi lebih lanjut, lihat Tutorial JMESPath.
Dalam transformasi data, Anda dapat menggunakan fungsi json_select, e_json, dan e_split dengan JMESPath untuk mengambil nilai bidang atau ekspresi JSON, atau untuk menghitung nilai tertentu. Sintaksisnya adalah sebagai berikut:
json_select(nilai, "ekspresi_jmes", ...)
e_json(nama_bidang, jmes="ekspresi_jmes", ...)
e_split(nama_bidang, ... jmes="ekspresi_jmes", ...)Untuk informasi lebih lanjut tentang cara menggunakan fungsi-fungsi ini, lihat json_select, e_json, dan e_split.
Mendapatkan nilai menggunakan kunci bidang
Log Mentah
json_data: {"a":"foo","b":"bar","c":"baz"}Sintaksis Transformasi
# Dapatkan nilai a dari ekspresi JSON. e_set("a1", json_select(v("json_data"), "a")) # Dapatkan nilai b dari ekspresi JSON. e_set("b1", json_select(v("json_data"), "b")) # Dapatkan nilai c dari ekspresi JSON. e_set("c1", json_select(v("json_data"), "c"))Hasil
a1:foo b1:bar c1:baz json_data:{"a":"foo","b":"bar","c":"baz"}
Mendapatkan nilai bersarang
Log Mentah
json_data:{"a": {"b":{"c":{"d":"value"}}}}Sintaksis Transformasi
# Dapatkan nilai d dari ekspresi JSON. e_set("e", json_select(v("json_data"), "a.b.c.d"))Hasil
e:nilai json_data:{"a": {"b":{"c":{"d":"nilai"}}}}
Mendapatkan nilai dengan memotong data
Log Mentah
json_data:{"a": ["b", "c", "d", "e", "f"]}Sintaksis Transformasi
# Dapatkan nilai dari bidang a, mulai dari irisan 2. Nilai pada irisan 0 adalah b, dan nilai pada irisan 1 adalah c. e_set("key", json_select(v("json_data"), "a[2:]"))Hasil
json_data:{"a": ["b", "c", "d", "e", "f"]} key:["d", "e", "f"]
Penggunaan Gabungan
Log Mentah
json_data:{"a": {"b": {"c": [{"d": [0, [1, 2]]}, {"d": [3, 4]}]}}}Sintaksis Transformasi
# c[0] mewakili bagian {"d": [0, [1, 2]]}. d[1] mewakili [1, 2]]. Nilai kembali adalah 1. e_set("key", json_select(v("json_data"), "a.b.c[0].d[1][0]"))Hasil
json_data:{"a": {"b": {"c": [{"d": [0, [1, 2]]}, {"d": [3, 4]}]}}} key:1
Mendapatkan nilai menggunakan proyeksi
Contoh 1
Log Mentah
json_data:{"people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"},{"first": "Jayden", "last": "f"},{"missing": "different"}],"foo": {"bar": "baz"}}Sintaksis Transformasi
# Dapatkan nilai-nilai bidang first dari daftar people. e_set("key", json_select(v("json_data"), "people[*].first"))Hasil
json_data:{"people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"},{"first": "Jayden", "last": "f"},{"missing": "different"}],"foo": {"bar": "baz"}} key:["James", "Jacob", "Jayden"]
Contoh 2
Log Mentah
json_data:{"ops": {"functionA": {"numArgs": 2},"functionB": {"numArgs": 3},"functionC": {"variadic": true}}}Sintaksis Transformasi
# Dapatkan nilai-nilai bidang numArgs dari ops. e_set("key", json_select(v("json_data"), "ops.*.numArgs"))Hasil
json_data:{"ops": {"functionA": {"numArgs": 2},"functionB": {"numArgs": 3},"functionC": {"variadic": true}}} key:[2, 3]
Contoh 3
Log Mentah
json_data:{"machines": [{"name": "a", "state": "running"},{"name": "b", "state": "stopped"},{"name": "c", "state": "running"}]}Sintaksis Transformasi
# Dapatkan nilai nama dari mesin di mana state adalah 'running'. e_set("key", json_select(v("json_data"), "machines[?state=='running'].name"))Hasil
json_data:{"machines": [{"name": "a", "state": "running"},{"name": "b", "state": "stopped"},{"name": "c", "state": "running"}]} key:["a", "c"]
Ekstraksi beberapa nilai
Log Mentah
json_data:{"people": [{"name": "a","state": {"name": "up"}},{"name": "b","state": {"name": "down"}}]}Sintaksis Transformasi
# Dapatkan nilai nama dan state dari people. e_set("key", json_select(v("json_data"), "people[].[name, state.name]"))Hasil
json_data:{"people": [{"name": "a","state": {"name": "up"}},{"name": "b","state": {"name": "down"}}]} key:[["a", "up"], ["b", "down"]]
Menghitung jumlah elemen dalam array
Log Mentah
json_data:{"a": ["b", "c", "d", "e", "f"]}Sintaksis
# Dapatkan panjang array a. e_set("key", json_select(v("json_data"), "length(a)"))# Dapatkan panjang array a. Jika length(a) > 0, atur bidang no-empty ke true. e_if(json_select(v("json_data"), "length(a)", default=0), e_set("no-empty", true))Hasil
json_data:{"a": ["b", "c", "d", "e", "f"]} key:5json_data:{"a": ["b", "c", "d", "e", "f"]} no-empty:true