示例数据
以下教程基于如下 JSON 示例:
{
"store": {
"name": "Book Store",
"books": [
{ "title": "JSON Guide", "price": 29.9, "category": "tech" },
{ "title": "Web Dev", "price": 39.9, "category": "tech" },
{ "title": "Cooking", "price": 19.9, "category": "life" }
],
"location": { "city": "Shanghai", "zip": "200000" }
}
}
基础语法
| 表达式 | 含义 | 结果 |
|---|---|---|
$ | 根节点 | 整个 JSON |
$.store.name | 点号访问属性 | "Book Store" |
$.store['name'] | 方括号访问 | "Book Store" |
$.store.books[0] | 数组索引 | 第一本书对象 |
$.store.books[-1] | 倒数第一个 | 最后一本书 |
$.store.books[*].title | 通配符 | 所有书名数组 |
数组切片与过滤
$.store.books[0:2] → 前 2 本书 $.store.books[?(@.price < 30)] → 价格低于 30 的书 $.store.books[?(@.category=='tech')] → tech 分类的书
过滤器 [?(表达式)] 中,@ 代表当前数组元素。支持比较运算符 ==、!=、<、> 及逻辑与 &&。
递归下降
使用 .. 可以在任意深度搜索字段名,无需知道完整路径:
$.store..title → 所有层级的 title 字段 $..price → 所有 price 字段
这在处理结构不统一或嵌套层级很深的 JSON 时特别有用,例如日志数据或第三方 API 响应。
HiJSON 多字段对比语法
HiJSON 扩展支持一种特殊的 JSONPath 语法,用于将数组中多个对象的指定字段提取为对比表格:
$.store.books[*].{title, price, category}
这将在 HiJSON 中生成一个三列对比表格,每行对应一本书,方便快速核对数据。在搜索框中输入上述表达式即可触发多字段对比模式。
在 HiJSON 中使用 JSONPath
- 在 HiJSON 中解析 JSON 数据(粘贴后点击「解析」)。
- 在顶部搜索框中输入以
$开头的 JSONPath 表达式。 - HiJSON 将高亮匹配节点,并在下方显示查询结果列表。
- 点击结果项可跳转到对应树节点,查看完整上下文。
- 开启「记忆模式」后,路径查询结果会自动保存,方便反复对比。
实用技巧
- 键名含特殊字符:使用方括号语法,如
$['field-name'] - 不确定路径:先用
$..fieldName递归搜索,再根据结果精确定位 - 组合查询:先过滤再提取,如
$.items[?(@.status=='active')].id - 复制路径:在树形视图中点击节点,详情面板显示完整 JSONPath,可一键复制