我试图弄清楚如何编写一个JSONPath过滤器,它将选择属性以子字符串结尾的数组的成员。我正在尝试使用this tool。
网站提供的示例数据是
{
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
},
"phoneNumbers": [
{
"type" : "iPhone",
"number": "0123-4567-8888"
},
{
"type" : "home",
"number": "0123-4567-8910"
}
]
}
我希望这个过滤器只给我一个类型为“iPhone”的电话号码。
$.phoneNumbers[?(@.type =~ /ne$/ )]
相反,它给了我两个电话号码。谁能告诉我为什么?
答案 0 :(得分:0)
我相信表达式应该与整个字符串匹配,否则您将不会得到任何结果。
此过滤器应该有效
$.phoneNumbers[?(@.type =~ /^[a-z|A-Z|0-9]+ne$/ )]
它与jayway配合使用,越轨返回
[
{
"type" : "iPhone",
"number" : "0123-4567-8888"
}
]
但显然不是Goessner。
我认为人行道是正确的。 My own C++ JsonPath实现的结果与jayway相同。
答案 1 :(得分:0)
Katie-抱歉,回答延迟。
$..phoneNumbers[?(@['type'] == 'iPhone')].number
希望该解决方案有效。
也许这种解决方案将对其他人有用。