JsonPath查询?

JsonPath查询?,json,jsonpath,Json,Jsonpath,我有一个JSON文件,如下所示: { "Resources": { "myresource1": { "Properties": { "keyA": { "Ref": "resource2" }, "keyB": "something", "keyC": { "another object": { "Ref": "resource3"

我有一个JSON文件,如下所示:

{
  "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!