为什么需要按路径提取 JSON
接口响应一层套一层,data.user.profile.email 藏得很深。整段格式化后肉眼翻,不如用路径直接取出目标字段。ComTools JSONPath 查询(Tools/Json/Path)在浏览器本地按路径取值,结果以格式化 JSON 显示。
输入格式(重要)
工具约定:
- 第一行:路径表达式(如
$.user.name) - 第二行起:完整 JSON 正文
若只有一行且是合法 JSON,则等价于路径 $(返回整棵树)。
路径写法
| 写法 | 含义 |
|---|---|
$ |
整份 JSON |
$.user |
根下的 user |
$.user.name |
嵌套属性 |
$.tags |
取数组本身 |
当前实现为点号分隔的属性路径(简化版 JSONPath):支持 $.a.b.c。复杂过滤(如 $..name、[?(@.id==1)])暂不支持;数组下标可用 $.tags.0 这类形式(JavaScript 下标访问)。
使用步骤
- 打开 JSONPath 查询。
- 第一行写路径,下面粘贴 JSON(可点「示例」:
$.user.name+ 样例对象)。 - 点击 运行。
- 右侧查看提取结果,复制带走。
数据仅在本地解析,不上传服务器。
示例
输入:
$.user.name
{
"user": {
"id": 1,
"name": "ComTools",
"active": true
},
"tags": ["json", "excel", "image"]
}
输出:
"ComTools"
取整个用户对象时用 $.user:
{
"id": 1,
"name": "ComTools",
"active": true
}
路径不存在时结果为 null。
常见场景
| 场景 | 路径思路 |
|---|---|
| 只要用户名 | $.data.user.name(按真实结构调整) |
| 看某一段配置 | $.settings |
| 取 tags 列表 | $.tags |
| 先确认 JSON 合法 | JSON 校验 |
| 看不清结构 | 先 格式化 |
与相关工具
| 需求 | 工具 |
|---|---|
| 按路径取值 | JSONPath |
| 美化整树 | JSON 格式化 |
| 数组导出表格 | JSON 转 CSV |
| 对比两版响应 | JSON 对比 |
注意事项
- 必须是标准 JSON;路径行不要夹在 JSON 中间。
- 仅点号路径,不是完整 JSONPath 标准全集。
- 中间某一级为
null/undefined时,后续无法继续,输出null。
常见问题
Q:支持 $.items[*].id 吗?
A:当前不支持通配与过滤器;可先取出 $.items,再在本地处理,或多次对单个下标查询。
Q:路径要不要加 $?
A:建议加;工具会去掉开头的 $ / $. 再按点拆分。
Q:和 jq 有何区别?
A:网页即用、语法更简单;复杂查询仍推荐 jq / 代码库。