JMESPath 自定义函数
JMESPath 自定义函数参考
函数 | 描述 | 示例 | 注释 |
---|---|---|---|
base64_decode |
解码 base64(RFC 4648) 编码的字符串 | 输入: {"encoded": "SGVsbG8gV29ybGQh"} 表达式: base64_decode(encoded) 输出: Hello World! |
|
capitalize |
将字符串中的所有单词的首字母大写 | 输入: {"name": "john doe"} 表达式: capitalize(name) 输出: John Doe |
|
concat |
连接变量或字面量数组 | 输入: {"fname": "john", "lname": "doe"} 表达式: concat([fname, ' ' ,lname]) 输出: john doe |
这等效于更详细的内置表达式: ' '.join([fname,lname]) |
filter_entries |
使用给定的 JMESPath 谓词过滤字典(对象)中的条目 | 输入: { "name": "John", "age": 30, "country": "US", "score": 15} 表达式: filter_entries(@, `key == 'name' || key == 'age'`) 输出: {"name": "John", "age": 30 } |
|
from_entries |
将具有 key 和 value 属性的对象数组转换为单个对象 |
输入: [{"key": "name", "value": "John"}, {"key": "age", "value": 30}, {"key": "city", "value": null}] 表达式: from_entries(@) 输出: {"name": "John", "age": 30, "city": null} |
|
hash |
使用指定的 hash_name 哈希函数计算哈希值并返回其十六进制表示 |
输入: {"some_str": "some_value"} 表达式: hash(some_str, `sha1`) 输出: 8c818171573b03feeae08b0b4ffeb6999e3afc05 |
支持的算法: sha1 (默认), sha256, md5, sha384, sha3_384, blake2b, sha512, sha3_224, sha224, sha3_256, sha3_512, blake2s |
in |
检查元素是否与值列表中的任何值匹配 | 输入: {"el": "b"} 表达式: in(el, ["a", "b", "c"]) 输出: True |
|
left |
从给定文本字符串的开头返回指定数量的字符 | 输入: {"greeting": "hello world!"} 表达式: left(greeting, 5) 输出: hello |
|
lower |
将字符串中的所有大写字符转换为小写字符 | 输入: {"fname": "John"} 表达式: lower(fname) 输出: john |
|
mid |
从给定文本字符串的中间返回指定数量的字符 | 输入: {"greeting": "hello world!"} 表达式: mid(greeting, 4, 3) 输出: o w |
|
json_parse |
从给定的 json 字符串返回解析后的对象 | 输入: {"data": '{"greeting": "hello world!"}'} 表达式: parse_json(data) 输出: {"greeting": "hello world!"} |
|
regex_replace |
替换与正则表达式匹配的字符串 | 输入: {"text": "Banana Bannnana"} 表达式: regex_replace(text, 'Ban\w+', 'Apple Apple') 输出: Apple Apple |
|
replace |
将子字符串的所有出现替换为新的子字符串 | 输入: {"sentence": "one four three four!"} 表达式: replace(sentence, 'four', 'two') 输出: one two three two! |
|
right |
从给定文本字符串的末尾返回指定数量的字符 | 输入: {"greeting": "hello world!"} 表达式: right(greeting, 6) 输出: world! |
|
split |
根据指定的分隔符(默认为逗号)将给定字符串拆分为字符串列表 | 输入: {"departments": "finance,hr,r&d"} 表达式: split(departments) 输出: ['finance', 'hr', 'r&d'] |
默认分隔符是逗号 - 可以将不同的分隔符作为第二个参数传递给函数,例如: split(departments, ';') |
time_delta_days |
返回给定时间 dt 与现在之间的天数(正数)或从现在开始过去的天数(负数) |
输入: {"dt": '2021-10-06T18:56:16.701670+00:00'} 表达式: time_delta_days(dt) 输出: 365 |
如果 dt 是字符串,则假定为 ISO 日期时间格式(例如 2011-11-04T00:05:23+04:00)。如果 dt 是数字,则假定为 Unix 时间戳(例如 1320365123)。 |
time_delta_seconds |
返回给定时间 dt 与现在之间的秒数(正数)或从现在开始过去的秒数(负数) |
输入: {"dt": '2021-10-06T18:56:16.701670+00:00'} 表达式: time_delta_days(dt) 输出: 31557600 |
如果 dt 是字符串,则假定为 ISO 日期时间格式(例如 2011-11-04T00:05:23+04:00)。如果 dt 是数字,则假定为 Unix 时间戳(例如 1320365123)。 |
to_entries |
将给定对象转换为具有 key 和 value 属性的对象数组 |
输入: {"name": "John", "age": 30, "city": null} 表达式: to_entries(@) 输出: [{"key": "name", "value": "John"}, {"key": "age", "value": 30}, {"key": "city", "value": null}] |
|
upper |
将字符串中的所有小写字符转换为大写字符 | 输入: {"fname": "john"} 表达式: upper(fname) 输出: JOHN |
|
uuid |
生成一个随机 UUID4 并以标准格式作为字符串返回 | 输入: 无 表达式: uuid() 输出: 3264b35c-ff5d-44a8-8bc7-9be409dac2b7 |