JsonPath:按数组中的值过滤以获得特定值

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

我正在尝试使用 Jsonpath 按值过滤 Json 中的数组。我想获取下面 JSON 中位置的 locationLegalName。

例如,我有一个代码 CC024,我需要与此 json 进行比较,以及位置代码匹配的位置,我想提取 locationLegalName。在本例中,它将是蓬塔卡纳酒店。

同样,另一个例子,我有一个代码 CC021,该输出将是 Restaurant Punta Cana。

任何人都可以帮我解决 jsonPath 问题吗?

[    
    {
        "propertyId": 171
        "locations": [
            {
                "locationId": 362,
                "locationCode": "CC001",
                "locationLegalName": "Hotel Atlantic City",
                "locationLongName": "Hotel Atlantic City",
                "locationShortName": "Hotel Atlantic City"
            }
        ]
    },
    {
        "propertyId": 174,
        "locations": [
            {
                "locationId": 435,
                "locationCode": "CC021",
                "locationLegalName": "Restaurant Punta Cana",
                "locationLongName": "Restaurant Punta Cana",
                "locationShortName": "Restaurant Punta Cana"
            },
            {
                "locationId": 436,
                "locationCode": "CC024",
                "locationLegalName": "Hotel Punta Cana",
                "locationLongName": "Hotel Punta Cana",
                "locationShortName": "Hotel Punta Cana"
            }

        ]
    }
]    

我尝试了几个 jsonPath 表达式,但无法编写任何内容。

json xpath expression jsonpath
1个回答
0
投票

我要做的是首先使用递归下降运算符

..locations
收集所有位置。然后就可以非常简单地筛选出您想要的那个了。

$..locations[[email protected]=='CC021'].locationLegalName

突破:

$..locations                                             (1)
            [[email protected]=='CC021']                   (2)
                                      .locationLegalName (3)
  1. 获取所有位置。结果是数组的集合。
  2. 在每个数组中搜索带有
    locationCode == 'CC021'
    的项目。这里的结果是对象的集合。
  3. 获取任何返回的
    locationLegalName
    。这里的结果是字符串的集合。

这可以在 https://json-everything.net/json-path(我的游乐场)上进行测试。

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