JSON 使用 Jayway 的数组的路径 JSON 路径
JSON Path for Array Of Array using Jayway JSON Path
我有一个 JSON 结构如下:
[{
"firstName": "John",
"age" : 26,
"phoneNumbers": [
{
"type" : "iPhone",
"number": "0123-4567-8888"
},
{
"type" : "home",
"number": "0123-4567-8910"
}
]
},
{
"firstName": "Johny",
"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 且姓名为 JOHN 的用户。
我使用了下面的表达式
$[?(@.firstName=='John')].phoneNumbers[?(@.type=='iPhone')]
但是我想提取完整的用户信息。我也尝试过过滤条件 API,但在其中我无法找到访问 Phone 类型属性的方法。
for(var i=0;i<s.length;i++){
for(var j=0;j<s[i].phoneNumbers.length;j++){
if(s[i].phoneNumbers[j].type == 'iPhone'){
alert(s[i].firstName+" "+s[i].age+" "+s[i].phoneNumbers[j].type+"
"+s[i].phoneNumbers[j].number);
}
}
}
此处 var s 是您的 json 对象。
如本 中所述,Jayway 实现支持内联 AND 和 OR 条件。以下JSON路径应该符合您的要求。
$[?(@.firstName=='John' && 'iPhone' in @.phoneNumbers[*].type)]
下面是来自Jayway JsonPath Evaluator
的截图
另外,请注意,语法可能会因所使用的实现而异。
我有一个 JSON 结构如下:
[{
"firstName": "John",
"age" : 26,
"phoneNumbers": [
{
"type" : "iPhone",
"number": "0123-4567-8888"
},
{
"type" : "home",
"number": "0123-4567-8910"
}
]
},
{
"firstName": "Johny",
"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 且姓名为 JOHN 的用户。
我使用了下面的表达式
$[?(@.firstName=='John')].phoneNumbers[?(@.type=='iPhone')]
但是我想提取完整的用户信息。我也尝试过过滤条件 API,但在其中我无法找到访问 Phone 类型属性的方法。
for(var i=0;i<s.length;i++){
for(var j=0;j<s[i].phoneNumbers.length;j++){
if(s[i].phoneNumbers[j].type == 'iPhone'){
alert(s[i].firstName+" "+s[i].age+" "+s[i].phoneNumbers[j].type+"
"+s[i].phoneNumbers[j].number);
}
}
}
此处 var s 是您的 json 对象。
如本
$[?(@.firstName=='John' && 'iPhone' in @.phoneNumbers[*].type)]
下面是来自Jayway JsonPath Evaluator
的截图另外,请注意,语法可能会因所使用的实现而异。