有时在数组中的元素的 JSON 路径

问题描述 投票:0回答:1

当“条件”为 1 时,我需要一个“元素”的 JSON 路径

{
  "customer": [
    {
      "Addresses": {
        "addressDetails": {
          "element": "one"
        },
        "Condition": {
          "type": 1
        }
      }
    },
    {
      "Addresses": [
        {
          "addressDetails": {
            "element": "two"
          },
          "Condition": {
            "type": 0
          }
        },
        {
          "addressDetails": {
            "element": "three"
          },
          "Condition": {
            "type": 1
          }
        }
      ]
    }
  ]
}
                                      

正如您在示例中看到的:“地址”有时可以是包含多个详细信息的数组。我只需要获取“条件”等于 1 的“元素” - 因此从这个片段中,JSON 路径应该返回“一”和“三”。这可能吗?

我尝试了许多不同的方法来使用 [?(@.==)] 进行过滤,但它从未起作用 - 我只能从非数组对象或数组对象中获取元素,而不是同时从两者中获取元素。

arrays json filtering jsonpath
1个回答
0
投票

您正在寻找的是递归下降运算符

..
。这将递归地搜索树。从这里开始,然后你就可以使用你的过滤器了
[?...]

$..[?(@.Condition.type == 1)]

您可以在我的网站上进行测试:https://json-everything.net/json-path


顺便说一句,使用新的 RFC 9535,您不需要括号:

$..[[email protected] == 1]

请注意,由于这是一个新规范,因此实现仍在赶上,因此请检查您正在使用的库。

© www.soinside.com 2019 - 2024. All rights reserved.