Cette rubrique décrit la syntaxe JMESPath courante et fournit des exemples d'utilisation.
JMESPath est un langage de requête et de calcul amélioré pour le format JSON. Utilisez JMESPath pour extraire, calculer et convertir des données JSON. Pour plus d'informations, consultez le Tutoriel JMESPath.
Lors de la transformation des données, utilisez les fonctions json_select, e_json et e_split avec JMESPath afin de récupérer les valeurs des champs ou des expressions JSON, ou pour calculer des valeurs spécifiques. La syntaxe est la suivante :
json_select(value, "jmes_expression", ...)
e_json(field_name, jmes="jmes_expression", ...)
e_split(field_name, ... jmes="jmes_expression", ...)
Pour plus d'informations sur l'utilisation de ces fonctions, consultez les rubriques json_select, e_json et e_split.
Obtenir une valeur à l'aide de la clé d'un champ
-
Journal brut
json_data: {"a":"foo","b":"bar","c":"baz"} -
Syntaxe de transformation
# 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")) -
Résultat
a1:foo b1:bar c1:baz json_data:{"a":"foo","b":"bar","c":"baz"}
Obtenir une valeur imbriquée
-
Journal brut
json_data:{"a": {"b":{"c":{"d":"value"}}}} -
Syntaxe de transformation
# Get the value of d from the JSON expression. e_set("e", json_select(v("json_data"), "a.b.c.d")) -
Résultat
e:value json_data:{"a": {"b":{"c":{"d":"value"}}}}
Obtenir une valeur par découpage des données
-
Journal brut
json_data:{"a": ["b", "c", "d", "e", "f"]} -
Syntaxe de transformation
# 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:]")) -
Résultat
json_data:{"a": ["b", "c", "d", "e", "f"]} key:["d", "e", "f"]
Utilisation combinée
-
Journal brut
json_data:{"a": {"b": {"c": [{"d": [0, [1, 2]]}, {"d": [3, 4]}]}}} -
Syntaxe de transformation
# 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]")) -
Résultat
json_data:{"a": {"b": {"c": [{"d": [0, [1, 2]]}, {"d": [3, 4]}]}}} key:1
Obtenir une valeur à l'aide d'une projection
-
Exemple 1
-
Journal brut
json_data:{"people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"},{"first": "Jayden", "last": "f"},{"missing": "different"}],"foo": {"bar": "baz"}} -
Syntaxe de transformation
# Get the values of the first fields from the people list. e_set("key", json_select(v("json_data"), "people[*].first")) -
Résultat
json_data:{"people": [{"first": "James", "last": "d"},{"first": "Jacob", "last": "e"},{"first": "Jayden", "last": "f"},{"missing": "different"}],"foo": {"bar": "baz"}} key:["James", "Jacob", "Jayden"]
-
-
Exemple 2
-
Journal brut
json_data:{"ops": {"functionA": {"numArgs": 2},"functionB": {"numArgs": 3},"functionC": {"variadic": true}}} -
Syntaxe de transformation
# Get the values of the numArgs fields from ops. e_set("key", json_select(v("json_data"), "ops.*.numArgs")) -
Résultat
json_data:{"ops": {"functionA": {"numArgs": 2},"functionB": {"numArgs": 3},"functionC": {"variadic": true}}} key:[2, 3]
-
-
Exemple 3
-
Journal brut
json_data:{"machines": [{"name": "a", "state": "running"},{"name": "b", "state": "stopped"},{"name": "c", "state": "running"}]} -
Syntaxe de transformation
# Get the name values from machines where the state is 'running'. e_set("key", json_select(v("json_data"), "machines[?state=='running'].name")) -
Résultat
json_data:{"machines": [{"name": "a", "state": "running"},{"name": "b", "state": "stopped"},{"name": "c", "state": "running"}]} key:["a", "c"]
-
Extraire plusieurs valeurs
-
Journal brut
json_data:{"people": [{"name": "a","state": {"name": "up"}},{"name": "b","state": {"name": "down"}}]} -
Syntaxe de transformation
# Get the name and state values from people. e_set("key", json_select(v("json_data"), "people[].[name, state.name]")) -
Résultat
json_data:{"people": [{"name": "a","state": {"name": "up"}},{"name": "b","state": {"name": "down"}}]} key:[["a", "up"], ["b", "down"]]
Calculer le nombre d'éléments dans un tableau
-
Journal brut
json_data:{"a": ["b", "c", "d", "e", "f"]} -
Syntaxe
# 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))Résultat
json_data:{"a": ["b", "c", "d", "e", "f"]} key:5json_data:{"a": ["b", "c", "d", "e", "f"]} no-empty:true