JMESPath内置函数完全解析:从基础聚合到复杂数据转换的25个函数详解

张开发
2026/4/18 6:06:11 15 分钟阅读

分享文章

JMESPath内置函数完全解析:从基础聚合到复杂数据转换的25个函数详解
JMESPath内置函数完全解析从基础聚合到复杂数据转换的25个函数详解【免费下载链接】jmespath.pyJMESPath is a query language for JSON.项目地址: https://gitcode.com/gh_mirrors/jm/jmespath.pyJMESPath是一种强大的JSON查询语言通过内置函数可以轻松实现数据过滤、转换和聚合操作。本文将系统介绍JMESPath的25个核心函数帮助你掌握从简单值处理到复杂数组转换的完整技能。一、基础数据处理函数abs()获取数字绝对值功能返回输入数字的绝对值语法abs(number)示例# 输入: -15.5 abs(-15.5) → 15.5源码实现jmespath/functions.pyceil() floor()数值取整ceil()向上取整floor()向下取整语法ceil(number)|floor(number)示例ceil(2.3) → 3 floor(2.7) → 2to_string()/to_number()/to_array()类型转换三件套to_string()任意类型转字符串JSON序列化to_number()字符串转数字支持整数/浮点数to_array()非数组值转为单元素数组示例to_string(123) → 123 to_number(45.6) → 45.6 to_array(hello) → [hello]二、数组与字符串操作length()获取长度功能返回字符串、数组或对象的元素个数语法length(any)示例length(JMESPath) → 8 length([1,2,3]) → 3 length({name: test}) → 1contains()/starts_with()/ends_with()字符串搜索contains()判断数组/字符串是否包含指定元素starts_with()/ends_with()判断字符串首尾匹配示例contains(hello world, world) → true starts_with(JMESPath, JM) → true ends_with(query.json, .json) → truereverse()反转序列功能反转字符串或数组语法reverse(any)示例reverse(hello) → olleh reverse([3,2,1]) → [1,2,3]join()数组拼接字符串功能用分隔符连接字符串数组语法join(separator, array)示例join(, , [a, b, c]) → a, b, c三、聚合统计函数sum()/avg()求和与平均值sum()计算数字数组总和avg()计算数字数组平均值空数组返回null示例sum([1,2,3,4]) → 10 avg([1,3,5]) → 3min()/max()极值计算功能返回数组中的最小/最大值支持数字和字符串语法min(array)|max(array)示例max([5, 2, 9]) → 9 min([apple, banana, cherry]) → applekeys()/values()对象属性提取keys()返回对象所有键名组成的数组values()返回对象所有值组成的数组示例keys({name: Alice, age: 30}) → [name, age] values({name: Alice, age: 30}) → [Alice, 30]四、高级转换函数map()数组元素转换功能对数组每个元素应用表达式转换语法map(expression, array)示例# 将数组元素翻倍 map((*2), [1,2,3]) → [2,4,6]源码实现jmespath/functions.pysort()/sort_by()排序操作sort()对数组进行自然排序sort_by()按指定表达式结果排序示例sort([3,1,2]) → [1,2,3] sort_by([{a:3}, {a:1}], a) → [{a:1}, {a:3}]merge()对象合并功能合并多个对象后出现的键会覆盖前面的语法merge(object1, object2, ...)示例merge({a:1}, {b:2}, {a:3}) → {a:3, b:2}min_by()/max_by()条件极值功能根据表达式结果找到数组中最小/最大元素语法min_by(array, expression)|max_by(array, expression)示例# 找到年龄最小的用户 min_by([{name:A,age:20}, {name:B,age:25}], age) → {name:A,age:20}五、工具类函数type()类型检测功能返回值的JMESPath类型string/number/array等语法type(any)示例type(123) → number type(null) → null type([]) → arraynot_null()非空值选择功能返回第一个非null的参数支持变长参数语法not_null(arg1, arg2, ...)示例not_null(null, default, 0) → default六、函数使用最佳实践类型安全注意函数对输入类型的要求如sum()仅接受数字数组空值处理多数数组函数在空数组时返回null如avg()、min()性能考量sort_by()、map()等函数对大数组操作时需注意性能复合表达式结合管道|和函数可实现复杂逻辑# 获取用户列表中年龄最大者的名字 users | max_by(, age).name通过灵活组合这些函数你可以轻松处理JSON数据中的各种转换需求。完整的函数定义可参考项目源码jmespath/functions.py。安装与使用要开始使用JMESPath可通过以下命令安装git clone https://gitcode.com/gh_mirrors/jm/jmespath.py cd jmespath.py pip install .在Python中使用示例import jmespath data {users: [{name: Alice, age: 30}, {name: Bob, age: 25}]} print(jmespath.search(max_by(users, age).name, data)) # 输出: Alice掌握这些函数将显著提升你的JSON数据处理效率让复杂查询变得简单直观【免费下载链接】jmespath.pyJMESPath is a query language for JSON.项目地址: https://gitcode.com/gh_mirrors/jm/jmespath.py创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

更多文章