如何通过JSONPath获取匹配节点的父级键名
获取JSON中type为password的节点父键名列表
基于Jayway JSONPath(Java等常用实现)
Jayway扩展了JSONPath语法,支持直接获取匹配节点的父级键名,使用以下表达式即可:
$..abc.*[?(@.type=='password')]^
执行后会直接返回目标列表:["some_field", "some_field_3"]
标准JSONPath环境(无扩展)
标准JSONPath本身不支持直接返回键名,可通过两种方式处理:
- 先获取匹配节点的完整路径(比如
$['abc']['some_field']),再从路径字符串中提取倒数第二个键名; - 直接通过代码遍历筛选,以JavaScript为例:
const data = { "abc": { "some_field": { "title": "Token", "type": "password" }, "some_field_2": { "title": "Domain", "type": "text" }, "some_field_3": { "title": "token2", "type": "password" } } }; const passwordKeys = Object.keys(data.abc).filter(key => data.abc[key].type === 'password');
运行后passwordKeys就是你需要的键名列表。
命令行用jq工具处理
如果是在命令行环境下操作JSON,用jq可以快速实现:
jq '.abc | to_entries | map(select(.value.type == "password").key)' your-json-file.json
执行后输出结果即为目标键名数组。
内容的提问来源于stack exchange,提问作者George Pamfilis
相关产品推荐
相关产品推荐

