对于如下 Json ,假设 site 数组下的元素数量足够多(此处限于篇幅,只写部分),需要通过 JsonPath 筛选出 site 里 name 为“菜鸟”的任意一个 id 。
{
"data": {
"site": [
{
"id": "2213341",
"name": "菜鸟"
},
{
"id": "4123124",
"name": "菜鸟"
},
{
"id": "2123412",
"name": "菜鸟"
},
{
"id": "1241433",
"name": "Google"
}
]
}
}
通过数组过滤器可以获取到所有满足条件的 id ,但好像无法在从中取出一个来了?
# 筛选出所有 name 为“菜鸟”的 id
$.data.site[?(@.name=="菜鸟")].id
[
"2213341",
"4123124",
"2123412"
]
在这个基础上尝试了以下用法好像都无法满足,比如:
$.data.site[?(@.name=="菜鸟")].id[0] x
$.data.site[?(@.name=="菜鸟")].id.min() x
# 再加一个过滤器?
$.data.site[?(@.name=="菜鸟") && something].id x
感觉通过过滤器筛选出来之后,有多个匹配,虽然也用 [] 包裹了所有的结果,但它并不是一个 Json 意义上的数组,所以无法通过数组的方式再次筛选里面的结果?
求解惑,求解决方案。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.