JMESPath支持的内置函数有哪些?
JMESPath的内置函数支持的数据类型包括:
- number(json中的整数和双精度浮点格式)
- string
- boolean(true 或 false)
- array(有序的,值序列)
- object(键值对的无序集合)
- expression(用&expression表示的表达式)
- null
各内置函数支持的数据类型不同。具体如下表。函数参数中一个特殊字符“@”代表将当前结果作为入参传递给函数:
内置函数 |
入参数据类型 |
出参数据类型 |
用途 |
内置函数使用示例 |
---|---|---|---|---|
abs |
number |
number |
返回所提供参数的绝对值。 |
|
avg |
array[number] |
number |
返回所提供数组中元素的平均值。 |
当前结果:[10, 15, 20] 表达式:avg(@) 最终结果:15 |
ceil |
number |
number |
通过向上舍入返回下一个整数值。 |
表达式:ceil(`1.001`) 最终结果:2 |
contains |
array|string, any |
boolean |
如果给定的两个参数中,前者包含后者,则返回true,否则此函数返回false。 |
|
ends_with |
string, string |
boolean |
如果入参的两个字符串中,前者以后者结尾,则返回true,否则此函数返回false。 |
当前结果:foobarbaz 表达式:ends_with(@,'baz') 最终结果:true |
floor |
number |
number |
通过向下四舍五入返回下一个整数值。 |
表达式:floor(`1.001`) 最终结果:1 |
join |
string, array[string] |
string |
返回所提供的字符串数组中使用给定字符串参数作为每个元素之间的分隔符连接在一起的所有元素。 |
当前结果:["a", "b"] 表达式:join(',', @) 最终结果:“a, b” |
keys |
object |
array |
返回包含所提供json对象的键的数组。由于json哈希是继承的无序的,因此与提供的入参对象关联的键是继承的无序的。实现不需要以任何特定顺序返回键的数组。 |
|
length |
string|array|object |
number |
使用以下类型规则返回给定参数的长度: 1.string:返回字符串中的字符个数。 2.array:返回数组中元素的个数。 3.object:返回对象中键值对的个数。 |
|
map |
expression->any->any, array[any] |
array[any] |
将入参中的表达式应用于入参中的数组的每个元素,并返回结果数组。长度为N的元素将产生长度为N的返回数组。 与投影不同,map()将包括为元素数组中的每个元素应用入参中的表达式的结果,即使结果为null。 |
|
max |
array[number]|array[string] |
number |
返回所提供的数组参数中的最大元素。 |
|
max_by |
array, expression->number|expression->string |
any |
使用入参中的表达式作为比较键返回数组中的最大元素。 |
当前结果:[{"name": "b", "age": 30, "age_str": "30"}, {"name": "a", "age": 50, "age_str": "50"}, {"name": "c", "age": 40, "age_str": "40"}] 对于如上当前结果: |
merge |
[object [, object ...]] |
object |
接受1个或多个对象,并返回一个合并了后续对象的单个对象。每个后续对象的键/值对都会添加到前面的对象中。此函数用于将多个对象合并为一个对象。您可以将其视为第一个对象是基对象,每个后续参数都是用于基对象的覆盖。 |
|
min |
array[number]|array[string] |
number |
返回所提供的数组参数中的最小元素。 |
|
min_by |
array, expression->number|expression->string |
any |
使用入参中的表达式作为比较键返回数组中的最小元素。 |
当前结果:{"people": [{"name": "b", "age": 30, "age_str": "30"}, {"name": "a", "age": 50, "age_str": "50"}, {"name": "c", "age": 40, "age_str": "40"}]} 对于如上当前结果: |
not_null |
[any [, any ...]] |
any |
此函数接收一个或多个参数,并将按顺序解析它们,直到遇到非空参数。如果所有参数值都解析为null,KooCLI会提示错误告警信息并输出原json结果。 |
|
reverse |
string|array |
string|array |
反转入参的顺序。 |
|
sort |
array[number]|array[string] |
array |
此函数接受数组参数,并将排序后的数组元素作为数组返回。 数组必须是字符串或数字的列表。字符串基于字典排序。 |
|
sort_by |
array, expression->number|expression->string |
- |
使用入参中的表达式作为排序键对入参的数组进行排序。对于元素数组中的每个元素,将应用入参中的表达式,并将结果值用作对元素排序时使用的键。 sort_by遵循与sort函数相同的排序逻辑。 |
当前结果:{"people": [{"name": "b", "age": 30, "age_str": "30"}, {"name": "a", "age": 50, "age_str": "50"}, {"name": "c", "age": 40, "age_str": "40"}]} 对于如上当前结果: |
starts_with |
string, string |
boolean |
如果入参的两个字符串中,前者以后者开头,则返回true,否则此函数返回false。 |
|
sum |
array[number] |
number |
返回所提供的数组参数的总和。 空数组将产生返回值0。 |
|
to_array |
any |
array |
array:返回传入的值。 number|string|object|boolean:返回包含传入参数的单元素数组。 |
|
to_string |
any |
string |
string:返回传入的值。 number|array|object|boolean:对象的json编码值。 |
|
to_number |
any |
number |
string:返回解析后的数字。 number:返回传入的值。 array|object|boolean|null:KooCLI会提示错误告警信息并输出原json结果 |
|
type |
array|object|string|number|boolean|null |
string |
将给定入参的数据类型作为字符串值返回。 返回值必须是以下之一:
|
|
values |
object |
array |
返回包含所提供json对象的值的数组。由于json哈希是继承的无序的,因此与提供的入参对象关联的值是继承的无序的。实现不需要以任何特定顺序返回json对象的值的数组。 |
当前结果:{"a": "first", "b": "second", "c": "third"} 表达式:values(@) 最终结果可能是:
|