简介
jmespath 是一个 JSON 路径查询语言,类似于 XPath 和 SQL,可以方便地从 JSON 数据中提取所需的信息。npm 包 jmespath 实现了该查询语言,可在前端和后端环境下使用。
安装
npm install jmespath
基础用法
查询语法
jmespath 查询语法基于 JSONPath 标准,并添加了一些扩展。
基本语法:
.
表示当前节点。[]
表示过滤器,支持通配符*
和数字索引。*
表示任意字段或元素。.
或[]
可以连续使用,表示多级路径查询。|
表示并集运算。not
表示逻辑非运算。and
和or
表示逻辑与和逻辑或运算。
更详细的语法介绍可以参考官方文档:https://jmespath.org/specification.html
使用示例
假设有以下 JSON 数据:
-- -------------------- ---- ------- - -------- - ------- - - ----------- ------------ --------- ------ ------ -------- -------- -- --- --------- -------- ---- -- - ----------- ---------- --------- ------- ------- -------- ------ -- -------- -------- ----- -- - ----------- ---------- --------- ------- ---------- -------- ----- ------ ------- ---------------- -------- ---- - -- ---------- - -------- ------ -------- ----- - - -
我们可以使用 jmespath 查询出所有书籍的标题和价格:
const jmespath = require('jmespath') const data = {...} // 上面的 JSON 数据 const result = jmespath.search(data, 'store.book[*].{title: title, price: price}') console.log(result)
输出结果为:
-- -------------------- ---- ------- - - -------- -------- -- --- --------- -------- ---- -- - -------- ------ -- -------- -------- ----- -- - -------- ----- ------ -------- ---- - -
进阶用法
变量定义
jmespath 支持在查询语句中定义变量,以便复用。
例如,我们想要查询所有售价大于 $10 的书籍:
const result = jmespath.search( data, `store.book[?price > $minPrice].{title: title, price: price}`, { minPrice: 10 } ) console.log(result)
输出结果为:
[ { "title": "Sword of Honour", "price": 12.99 } ]
内置函数
jmespath 内置了一些函数,可以方便地进行字符串、数值等处理。
例如,我们想要查询所有作者名字的首字母大写:
const result = jmespath.search( data, `store.book[*].{author: capitalize(author)}` ) console.log(result)
输出结果为:
-- -------------------- ---- ------- - - --------- ------ ----- -- - --------- ------- ------ -- - --------- ------- --------- - -
更多内置函数可以参考官方文档:https://jmespath.org/functions.html
总结
jmespath 是一个非常实用的 JSON 查询语言,在前端和后端开发中都有广泛应用。通过本教程,我们学习了 jmespath 的基础用法和进阶用法,希
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/37734