我正在尝试使用 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 表达式,但无法编写任何内容。
我要做的是首先使用递归下降运算符
..locations
收集所有位置。然后就可以非常简单地筛选出您想要的那个了。
$..locations[[email protected]=='CC021'].locationLegalName
突破:
$..locations (1)
[[email protected]=='CC021'] (2)
.locationLegalName (3)
locationCode == 'CC021'
的项目。这里的结果是对象的集合。locationLegalName
。这里的结果是字符串的集合。这可以在 https://json-everything.net/json-path(我的游乐场)上进行测试。