JsonPath查询?
我有一个JSON文件,如下所示:JsonPath查询?,json,jsonpath,Json,Jsonpath,我有一个JSON文件,如下所示: { "Resources": { "myresource1": { "Properties": { "keyA": { "Ref": "resource2" }, "keyB": "something", "keyC": { "another object": { "Ref": "resource3"
{
"Resources": {
"myresource1": {
"Properties": {
"keyA": {
"Ref": "resource2"
},
"keyB": "something",
"keyC": {
"another object": {
"Ref": "resource3"
}
}
}
},
"resource2": {
"Properties": {
"keyA": 1,
"keyB": 2
}
},
"resource3": {}
}
}
我想要一个JSON路径
查询,该查询查找所有资源
中包含Ref
对象的属性
因此在上面的JSON中,myresource1
有两个属性满足这个条件,Ref
s是resource2
和resource3
这可能吗
我发现这个查询有效:
$..Properties.*..Ref
它给了我一个路径列表:
[
"$['Resources']['myresource1']['Properties']['keyA']['Ref']",
"$['Resources']['myresource1']['Properties']['keyC']['another object']['Ref']"
]
有更好的解决方案吗?那么你是想抓住整个
myresource1
还是一个特定的部分?@JackFleeting我需要资源名称和Ref
属性的值,就像你可以得到一个或另一个,但不能同时得到两个一样。要获取Ref
属性的值,您可以使用$…Properties..[?(@.Ref)].Ref
,但要同时获取这两个属性,您需要能够使用嵌套过滤器或爬回父级,这在jsonpath(甚至jsonpath+)中似乎是不可能的。请参阅此处的详细讨论:。我唯一能想到的就是将json转换为xml,然后使用xpath,这可以很容易地获得所需的输出。谢谢@JackFleeting!