准备严格 JSON
可粘贴文本或导入本地文件。文件最多 500,000 字节,解码后输入最多 500,000 字符;注释和尾逗号不接受。导入、示例与清空先预览替换内容,应用后可撤销一次。 文件需为有效 UTF-8;不会自动删除 BOM,带 BOM 的内容会在 JSON 校验时报错。
JSON 工具
先运行年龄筛选示例,再试字段投影或对象重组。点击运行或按 Ctrl/Cmd+Enter 求值,修改后需重新运行。
预览按 5,000 字符分批显示,复制和下载包含完整结果。
JSON 与表达式仅在浏览器内存处理,不保存。
官方 jmespath.js 0.16.0 · 安全补丁 · 26 个标准函数
结果已过期,复制和下载已禁用。
面对云服务返回的一大段数据,通常只需要几项名称、一组状态或一个计数。用 JMESPath 查询先核对筛选条件和返回结构,可以减少把表达式写进脚本后才发现类型不符的来回修改。
这页的 JMESPath 表达式产生一个 JSON 值,而不是原始字段路径清单。结果可能是对象、数组、字符串或数字,先看清输出形状,再决定下一步如何消费数据。
先按年龄保留人员,再投影姓名,能把一组完整记录缩成名称列表。数组投影会省略求值为 null 的项,因此结果项数可能少于原数组;需要保留位置时应检查表达式结构。
多选对象可以命名结果字段,函数可以计算数组长度或按属性排序。JMESPath 查询能把名称列表和计数组成同一个对象,不必先复制整段响应,再手工删除无关字段。
可粘贴文本或导入本地文件。文件最多 500,000 字节,解码后输入最多 500,000 字符;注释和尾逗号不接受。导入、示例与清空先预览替换内容,应用后可撤销一次。 文件需为有效 UTF-8;不会自动删除 BOM,带 BOM 的内容会在 JSON 校验时报错。
默认只手动执行,Ctrl/Cmd+Enter 也可运行。点击查询示例只换表达式,不自动求值。输入或表达式修改后,旧结果立即过期,复制和下载需等新查询成功。
null、false、0、空字符串和 [] 都可能是正常结果。预览每次增加 5,000 字符,复制与下载使用完整已接受结果;预览没展示完不等于导出被截断。
JMESPath 过滤示例 people[?age >= `18`].name 先比较数值,再取姓名。数字字面量使用反引号,单引号表示原始字符串;数字 18 与字符串不是同一种类型。
用 {names: people[].name, count: length(people)} 为结果命名,并把名称数组和人数放进同一个对象。多选列表可以保留 null 位置,与自动省略空投影项的行为不同。
JMESPath 管道把左侧完整结果交给右侧继续计算。sort_by 配合 &age 按属性排序,length 返回长度;函数引用是表达式,并非普通字段名字字符串。
输入格式、表达式语法、未知函数、参数数量和参数类型错误分别提示。不存在的字段可返回 null,过滤没有保留记录则可返回 [],这些值不需要被改成错误提示。
JMESPath 查询可以筛选字段、调用函数,并构造新对象或列表;JSONPath 主要定位已有节点。本页只执行前者,不接受 $ 根前缀或 JSONPath 递归下降语法。
本页使用 JMESPath 写法,例如 people[?age >= `18`].name。把数值放在反引号中,确认源数据的 age 确实是数字;JSONPath 的条件语法应到相应工具测试。
竖线 | 将左边求值完成的整体结果作为右边输入,例如 people[].name | [0] 先取得姓名列表,再取列表第一项。它不是操作系统命令管道。
字段不存在或值本来就是 null 时,单次字段访问可能得到 null;过滤后无元素通常得到 []。二者都是合法 JSON 值,不能单凭 null 判定查询失败。
JMESPath 有 Python 的 jmespath 和 JavaScript 的 jmespath.js 等实现;JSONPath 的实现与方言较多。本页固定使用带安全补丁的 jmespath.js 0.16.0,迁移到其他运行环境时仍需核对版本与扩展。
发现查询结果或语法处理不正确?