JSON Path Tester
测试 JSONPath 表达式并从 JSON 数据中提取所需值的工具。API 响应解析和数据分析的必备工具!
Result will appear here...
Common Patterns
Root
$Root object
All Books
$.store.book[*]All books in store
First Book
$.store.book[0]First book
Last Book
$.store.book[-1]Last book
Book Titles
$.store.book[*].titleAll book titles
Books < $10
$.store.book[?(@.price < 10)]Books cheaper than $10
Books with ISBN
$.store.book[?(@.isbn)]Books with ISBN
All Prices
$.store..priceAll prices (recursive)
Syntax Guide:
$- Root object@- Current object.or[]- Child operator..- Recursive descent*- Wildcard[start:end]- Array slice[?(<expr>)]- Filter expression
什么是 JSONPath?
JSONPath 是一种用于查询 JSON 数据结构中值的表达式语言。就像 XPath 对于 XML 一样,JSONPath 允许您从 JSON 中提取特定数据。
主要语法
基本运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
$ | 根对象 | $ |
@ | 当前对象(过滤器内部) | @.price |
. 或 [] | 子元素 | $.store.book |
.. | 递归搜索 | $..price |
* | 通配符 | $.store.* |
[n] | 数组索引 | $.store.book[0] |
[start:end] | 数组切片 | $.store.book[0:2] |
[?(<expr>)] | 过滤器表达式 | $..book[?(@.price < 10)] |
数组索引
// 第一个元素
$.store.book[0]
// 最后一个元素
$.store.book[-1]
// 范围(从 0 到索引 2 之前)
$.store.book[0:2]
// 所有元素
$.store.book[*]
过滤器表达式
// 价格低于 10 的书籍
$.store.book[?(@.price < 10)]
// 有 ISBN 的书籍
$.store.book[?(@.isbn)]
// 类别为 fiction 的书籍
$.store.book[?(@.category === 'fiction')]
// 标题中包含特定单词的书籍
$.store.book[?(@.title.includes('Moby'))]
实际使用示例
从 API 响应中提取数据
// API 响应
{
"users": [
{ "id": 1, "name": "John", "active": true },
{ "id": 2, "name": "Jane", "active": false },
{ "id": 3, "name": "Bob", "active": true }
]
}
// 仅提取活跃用户
$.users[?(@.active === true)]
// 所有用户名
$.users[*].name
浏览嵌套数据
// 复杂的 JSON
{
"company": {
"departments": [
{
"name": "Engineering",
"employees": [
{ "name": "Alice", "salary": 100000 },
{ "name": "Bob", "salary": 90000 }
]
},
{
"name": "Sales",
"employees": [
{ "name": "Charlie", "salary": 80000 }
]
}
]
}
}
// 所有员工的工资
$..employees[*].salary
// 工资 >= 90000 的员工
$..employees[?(@.salary >= 90000)]
处理数组数据
// 电商数据
{
"products": [
{ "name": "Laptop", "price": 1000, "stock": 5 },
{ "name": "Mouse", "price": 20, "stock": 0 },
{ "name": "Keyboard", "price": 50, "stock": 10 }
]
}
// 有库存的产品
$.products[?(@.stock > 0)]
// 价格范围(20 ~ 100)
$.products[?(@.price >= 20 && @.price <= 100)]
使用场景
1. API 测试和调试
// 从 GraphQL 响应中提取错误消息
$.errors[*].message
// REST API 分页数据
$.data.items[*]
2. 数据分析
// 按特定条件过滤数据
$..transactions[?(@.amount > 1000)]
// 收集统计数据
$..metrics[*].value
3. 配置文件解析
// 提取特定环境配置
$.environments[?(@.name === 'production')]
// 已启用的功能标志
$.features[?(@.enabled === true)].name
4. 日志分析
// 仅过滤错误日志
$.logs[?(@.level === 'error')]
// 特定时间范围内的日志
$.logs[?(@.timestamp > 1234567890)]
比较运算符
JSONPath 过滤器中可用的运算符:
===- 等于!==- 不等于<- 小于<=- 小于或等于>- 大于>=- 大于或等于&&- AND||- OR
使用技巧
1. 分步测试
将复杂路径分解测试:
// 步骤 1: $.store
// 步骤 2: $.store.book
// 步骤 3: $.store.book[*]
// 步骤 4: $.store.book[*].title
2. 使用递归搜索
当结构未知时使用 ..:
// 查找所有 price 字段
$..price
3. 组合过滤器
组合多个条件:
$..book[?(@.price < 10 && @.category === 'fiction')]