如何用JsonPath.Net单查询提取不同嵌套层级同键属性值?
使用JsonPath.Net提取不同嵌套层级的同键属性值
完全可以通过单个JsonPath查询语句实现这个需求,核心是利用递归下降运算符..遍历JSON结构中所有层级的节点,匹配指定键名的属性。
示例JSON数据
{ "ObjA" : { "textValue" : "a1", "numValue" : 1 }, "ObjB" : { "objArray": [ { "textValue": "b1", "numValue" : 1 }, { "textValue": "b2", "numValue" : 2 } ] } }
提取所有textValue值
使用查询语句:
$..textValue
返回结果:
[ "a1", "b1", "b2" ]
提取所有numValue值
使用查询语句:
$..numValue
返回结果:
[ 1, 1, 2 ]
语法说明
$代表JSON根节点..是递归下降运算符,会遍历当前节点下的所有层级(包括子对象、数组元素内的对象)- 后续跟目标键名,即可匹配所有层级中带有该键的属性值
这个语法在JsonPath.Net中完全支持,你之前尝试失败大概率是写法问题,直接用上述语句就能得到预期结果。
内容的提问来源于stack exchange,提问作者Cliff Pennalligen
相关产品推荐
相关产品推荐

