根据字符串条件过滤器使用 Jsonpath 进行 Json 解析

根据字符串条件过滤器使用 Jsonpath 进行 Json 解析

我对 Jsonpath 还很陌生,由于项目依赖性而被迫使用。

示例 JSON 如下所示

{
  "people": {
    "a": {"First":"James", "last": "d"},
    "b": {"First":"Jacob", "last": "e"},
    "c": {"First":"Jayden", "last": "f"},
    "d": {"First":"different", "last" : "g"}
  }
}

我打算获取第一个值以“J”开头的最后一个值。

因此预期输出是

 "d","e","f"

使用 jq 也可以实现同样的效果

'.people | .[] | select (.First | startswith("J")) | .last'

但是,在参考了多个在线教程之后,我还是无法理解管道过滤器如何与 jsonpath 配合使用以及如何实现上述结果。我能用表达式达到的最接近的结果是:

"people.*[?starts_with(arn,`J`)].last"

但它没有产生任何输出。

如果有人能指出任何可以帮助我解决这个问题或理解 jsonpath 的查询结构的文章,那就太好了。

多谢。

答案1

解决方案是使用函数值(@)。参考自

https://github.com/jmespath/jmespath.site/issues/24

因此,上述问题的一个可能的解决方案是

people.values(@)[?starts_with(First,`J`)].last

相关内容