获取JSONPath中的同级值

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

下面是我的json。一个文件中有多个这样的数组。我想使用名称xyz访问字段带宽。我正在使用JSONPath

        "a": [
              {
                "name": "xyz",
                "displayValue": "value",
              },
              {
                "bandwidth": "123",
              }
           ],
           [
              {
                "name": "pqr",
                "displayValue": "value",
              },
              {
                "bandwidth": "789",
              }
      ]
json jsonpath
1个回答
0
投票

这可能来自为SO准备就绪的数据,但是您的JSON无效。它可能是:

{
  "a": [
    {
      "name": "xyz",
      "displayValue": "value"
    },
    {
      "bandwidth": "123"
    },
    {
      "name": "pqr",
      "displayValue": "value"
    },
    {
      "bandwidth": "789"
    }
  ]
}

{
  "a": [
    {
      "name": "xyz",
      "displayValue": "value"
    },
    {
      "bandwidth": "123"
    }
  ],
  "b": [
    {
      "name": "pqr",
      "displayValue": "value"
    },
    {
      "bandwidth": "789"
    }
  ]
}

就JSONPath而言。使用上面的第一个有效JSON,您可以使用以下语法:

$.a.[?(@.name=='xyz')].displayValue

?是过滤器表达式。当您要评估布尔表达式(例如名称等于“ xyz”)时使用]

@选择器是当前正在处理的节点。

然后,它获取当前节点的“名称”键,并将其值与硬编码值“ xyz”进行比较。如果计算结果为true,它将在同一节点中选择displayValue的值。

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