我可以通过做以下事情来找到一个有舞蹈爱好的人:

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>

enter image description here

我该如何为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"]}

推荐答案

您将需要执行嵌套的筛选器表达式查询.

$[?(@.hobbies[?(@ == 'dance')])]

[]个语法让您进入外部array.

此时,您需要一个筛选器查询来查看每一项.对于每一项,您需要查看hobbies数组中的每一项,因此您需要

  • .hobbies以获得该数组
  • 再给你[]美元,让你进入那个数组
  • 要判断dance的另一个筛选器查询

Json相关问答推荐

Vega-Lite时钟(使用Vega-Lite中的计时器)

删除JSON文件的特定内容

如何在VegaLite中应用Times New Roman,CaliBiri字体

无法从MongoDB集合中检索正确的文档

Jolt Spec 跳过数组中的第一个元素

Jolt 规范将父对象中的所有键应用于数组中的所有对象

嵌套存储在字符串变量中的 JSON 对象

如何在 Android Studio 中将 List 字段作为空列表[]返回?

从 json 对象中过滤掉所有出现的给定属性

JSON 模式验证

如何从Typescript 中的json响应中获取日期对象

apple-app-site-association json 文件是否会在应用程序中更新?

使用 gson 反序列化对象的特定 JSON 字段

将 JSON 对象推送到 localStorage 中的数组

在视图中将 .Net 对象转换为 JSON 对象

如何按键查找特定的 JSON 值?

ASP.NET Core API 仅返回列表的第一个结果

请求返回字节,我无法解码它们

如何在spark 上将json字符串转换为数据帧

如何将 mysqli 结果转换为 JSON?