全部产品
Search
文档中心

Simple Log Service:Sintaksis JMESPath

更新时间:Nov 09, 2025

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:5
    json_data:{"a": ["b", "c", "d", "e", "f"]}
    no-empty:true