我可以通过以下方式找到一个有“舞蹈”爱好的人:
Xpath = Persons/Person/Hobbies/Hobby[text()="Dance"]/../..
<Persons>
<Person>
<Name>David</Name>
<Age>20</Age>
<Hobbies>
<Hobby>Sing</Hobby>
<Hobby>Dance</Hobby>
</Hobbies>
</Person>
<Person>
<Name>Frank</Name>
<Age>30</Age>
<Hobbies>
<Hobby>Sing</Hobby>
<Hobby>Read</Hobby>
</Hobbies>
</Person>
</Persons>
我如何为JSONPath做同样的事情?例如,我有这个json:
[
{"name": "david", "age": 20, "hobbies": ["dance", "sing"]},
{"name": "frank", "age": 30, "hobbies": ["sing", "read"]}
]
到目前为止,我有$[*].hobbies[*]
,但我不知道如何进一步。我用https://jsonpath.com/来测试。我想要的结果应该是:
{"name": "david", "age": 20, "hobbies": ["dance", "sing"]}
2条答案
按热度按时间qv7cva1a1#
您需要执行嵌套的筛选器表达式查询。
第一个
[]
语法使您进入外部数组。此时,您需要一个筛选查询,它查看每一项。对于每一项,您需要查看
hobbies
数组的每一项,因此需要.hobbies
来得到这个数组[]
来进入数组dance
1dkrff032#
这并不是对您问题的直接回答,但是由于您显然已经了解XPath,并且您对JSONPath支持的变化提出了一些问题,我想我应该指出,您也可以在标准XPath 3.1(XPath的最新版本)中查询JSON数据。例如
将下面的XPath应用到JSON数组:
结果:
XPath fiddle