All Products
Search
Document Center

Simple Log Service:JMESPath syntax

Last Updated:Dec 10, 2025

This topic describes the common JMESPath syntax and provides examples on how to use the syntax.

JMESPath is an enhanced query and computing language for JSON. Use JMESPath to extract, compute, and convert JSON data. For more information, see JMESPath Tutorial.

In data transformation, use the json_select, e_json, and e_split functions with JMESPath to fetch the values of fields or JSON expressions, or to compute specific values. The syntax is as follows:

json_select(value, "jmes_expression", ...)
e_json(field_name, jmes="jmes_expression", ...)
e_split(field_name, ... jmes="jmes_expression", ...)

For more information about how to use these functions, see json_select, e_json, and e_split.

Obtain a value using the key of a field

  • Raw log

    json_data: {"a":"foo","b":"bar","c":"baz"}
  • Transformation syntax

    # Get the value of a from the JSON expression.
    e_set("a1", json_select(v("json_data"), "a"))
    # Get the value of b from the JSON expression.
    e_set("b1", json_select(v("json_data"), "b"))
    # Get the value of c from the JSON expression.
    e_set("c1", json_select(v("json_data"), "c"))
  • Result

    a1:foo
    b1:bar
    c1:baz
    json_data:{"a":"foo","b":"bar","c":"baz"}

Obtain a nested value

  • Raw log

    json_data:{"a": {"b":{"c":{"d":"value"}}}}
  • Transformation syntax

    # Get the value of d from the JSON expression.
    e_set("e", json_select(v("json_data"), "a.b.c.d"))
  • Result

    e:value
    json_data:{"a": {"b":{"c":{"d":"value"}}}}

Obtain a value by slicing data

  • Raw log

    json_data:{"a": ["b", "c", "d", "e", "f"]}
  • Transformation syntax

    # Get the values from field a, starting from slice 2. The value at slice 0 is b, and the value at slice 1 is c.
    e_set("key", json_select(v("json_data"), "a[2:]"))
  • Result

    json_data:{"a": ["b", "c", "d", "e", "f"]}
    key:["d", "e", "f"]

Combined Usage

  • Raw log

    json_data:{"a": {"b": {"c": [{"d": [0, [1, 2]]}, {"d": [3, 4]}]}}}
  • Transformation syntax

    # c[0] represents the {"d": [0, [1, 2]]} part. d[1] represents [1, 2]]. The return value is 1.
    e_set("key", json_select(v("json_data"), "a.b.c[0].d[1][0]"))
  • Result

    json_data:{"a": {"b": {"c": [{"d": [0, [1, 2]]}, {"d": [3, 4]}]}}}
    key:1

Obtain a value using projection

  • Example 1

    • Raw log

      json_data:{"people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"},{"first": "Jayden", "last": "f"},{"missing": "different"}],"foo": {"bar": "baz"}}
    • Transformation syntax

      # Get the values of the first fields from the people list.
      e_set("key", json_select(v("json_data"), "people[*].first"))
    • Result

      json_data:{"people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"},{"first": "Jayden", "last": "f"},{"missing": "different"}],"foo": {"bar": "baz"}}
      key:["James", "Jacob", "Jayden"]
  • Example 2

    • Raw log

      json_data:{"ops": {"functionA": {"numArgs": 2},"functionB": {"numArgs": 3},"functionC": {"variadic": true}}}
    • Transformation syntax

      # Get the values of the numArgs fields from ops.
      e_set("key", json_select(v("json_data"), "ops.*.numArgs"))
    • Result

      json_data:{"ops": {"functionA": {"numArgs": 2},"functionB": {"numArgs": 3},"functionC": {"variadic": true}}}
      key:[2, 3]
  • Example 3

    • Raw log

      json_data:{"machines": [{"name": "a", "state": "running"},{"name": "b", "state": "stopped"},{"name": "c", "state": "running"}]}
    • Transformation syntax

      # Get the name values from machines where the state is 'running'.
      e_set("key", json_select(v("json_data"), "machines[?state=='running'].name"))
    • Result

      json_data:{"machines": [{"name": "a", "state": "running"},{"name": "b", "state": "stopped"},{"name": "c", "state": "running"}]}
      key:["a", "c"]

Extract multiple values

  • Raw log

    json_data:{"people": [{"name": "a","state": {"name": "up"}},{"name": "b","state": {"name": "down"}}]}
  • Transformation syntax

    # Get the name and state values from people.
    e_set("key", json_select(v("json_data"), "people[].[name, state.name]"))
  • Result

    json_data:{"people": [{"name": "a","state": {"name": "up"}},{"name": "b","state": {"name": "down"}}]}
    key:[["a", "up"], ["b", "down"]]

Calculate the number of elements in an array

  • Raw log

    json_data:{"a": ["b", "c", "d", "e", "f"]}
  • Syntax

    # Get the length of array a.
    e_set("key", json_select(v("json_data"), "length(a)"))
    # Get the length of array a. If length(a) > 0, set the no-empty field to true.
    e_if(json_select(v("json_data"), "length(a)", default=0), e_set("no-empty", true))
  • Result

    json_data:{"a": ["b", "c", "d", "e", "f"]}
    key:5
    json_data:{"a": ["b", "c", "d", "e", "f"]}
    no-empty:true