Todos los productos
Search
Centro de documentos

Simple Log Service:Sintaxis de JMESPath

Última actualización: Sep 03, 2026

Este tema describe la sintaxis común de JMESPath y proporciona ejemplos sobre cómo utilizarla.

JMESPath es un lenguaje mejorado de consulta y procesamiento para JSON. Utilice JMESPath para extraer, procesar y convertir datos JSON. Para obtener más información, consulte Tutorial de JMESPath.

En la transformación de datos, utilice las funciones json_select, e_json y e_split junto con JMESPath para recuperar los valores de campos o expresiones JSON, o para calcular valores específicos. La sintaxis es la siguiente:

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

Para obtener más información sobre cómo usar estas funciones, consulte json_select, e_json y e_split.

Obtener un valor mediante la clave de un campo

  • Registro sin procesar

    json_data: {"a":"foo","b":"bar","c":"baz"}
  • Sintaxis de transformación

    # 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"))
  • Resultado

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

Obtener un valor anidado

  • Registro sin procesar

    json_data:{"a": {"b":{"c":{"d":"value"}}}}
  • Sintaxis de transformación

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

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

Obtener un valor mediante segmentación de datos

  • Registro sin procesar

    json_data:{"a": ["b", "c", "d", "e", "f"]}
  • Sintaxis de transformación

    # 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:]"))
  • Resultado

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

Uso combinado

  • Registro sin procesar

    json_data:{"a": {"b": {"c": [{"d": [0, [1, 2]]}, {"d": [3, 4]}]}}}
  • Sintaxis de transformación

    # 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]"))
  • Resultado

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

Obtener un valor mediante proyección

  • Ejemplo 1

    • Registro sin procesar

      json_data:{"people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"},{"first": "Jayden", "last": "f"},{"missing": "different"}],"foo": {"bar": "baz"}}
    • Sintaxis de transformación

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

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

    • Registro sin procesar

      json_data:{"ops": {"functionA": {"numArgs": 2},"functionB": {"numArgs": 3},"functionC": {"variadic": true}}}
    • Sintaxis de transformación

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

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

    • Registro sin procesar

      json_data:{"machines": [{"name": "a", "state": "running"},{"name": "b", "state": "stopped"},{"name": "c", "state": "running"}]}
    • Sintaxis de transformación

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

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

Extraer varios valores

  • Registro sin procesar

    json_data:{"people": [{"name": "a","state": {"name": "up"}},{"name": "b","state": {"name": "down"}}]}
  • Sintaxis de transformación

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

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

Calcular el número de elementos en una matriz

  • Registro sin procesar

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

    # 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))
  • Resultado

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