JSONPath:如何高效查询和过滤 JSON 数据

jsonpathjsonquerydata-filtering

JSONPath 是 JSON 的查询语言,类似于 XML 的 XPath。它让您快速高效地从复杂 JSON 结构中提取特定值。

基本 JSONPath 语法

给定以下 JSON:

{

"store": {

"books": [

{ "title": "JSON 指南", "price": 29.99 },

{ "title": "API 设计", "price": 39.99 },

{ "title": "Web 安全", "price": 19.99 }

],

"location": "北京"

}

}

常用 JSONPath 表达式:

  • $.store.books[0].title — 第一本书的标题
  • $.store.books[*].price — 所有书的价格
  • $.store.books[?(@.price < 30)] — 价格低于 30 的书
  • $.store.books[?(@.price > 20)].title — 价格超过 20 的书的标题
  • $.store.. — store 下的所有内容
  • 核心运算符

  • $ — 根元素
  • . — 子元素
  • [] — 数组索引或过滤器
  • *** — 通配符(所有元素)
  • .. — 递归下降
  • ?() — 过滤表达式
  • @ — 当前元素(在过滤器中)
  • 实际应用场景

  • API 响应过滤 — 只提取需要的字段
  • 数据验证 — 检查特定路径是否存在
  • 配置提取 — 从嵌套配置文件中提取设置
  • 测试** — 断言 JSON 响应中的特定值
  • JavaScript 中的 JSONPath

    // 使用 JSONPath Plus 库

    const jp = require('jsonpath-plus');

    const result = jp.JSONPath({path: '$.store.books[?(@.price < 30)]', json: data});

    复杂查询技巧

  • 从简单开始 — 逐层查询
  • 使用递归下降 .. 查找深层嵌套值
  • 使用 &&(与)和 ||(或)组合过滤器
  • 先格式化 JSON 再编写查询
  • 使用我们的 JSON 格式化器 在编写 JSONPath 查询前格式化数据,或尝试 JSON 查看器 进行交互式探索。

    相关工具