【发布时间】:2019-12-20 06:07:32
【问题描述】:
我在使用基于字符串条件的 Jmespath 解析 json 时遇到问题。我想根据另一个键的字符串值的条件来获取一个键的值。它们都在给定字典的相同层次结构中。但是,字典的父键是一个变量。我熟悉 jq 但 jmespath 对我来说是新的。我正在使用它,因为当前项目依赖于它。因此,更改解析器没有太多选择。
下面的示例 Json:-
{
"people": {
"a": {"First":"James", "last": "1"},
"b": {"First":"Jacob", "last": "2"},
"c": {"First":"Jayden", "last": "3"},
"d": {"First":"different", "last" : "4"}
}
}
我想获取最后一个值,其中 First 的值以“J”开头。
我已经尝试参考官方网站http://jmespath.org/tutorial.html提供的文章。但是,它们中的大多数都专注于标准键结构,而很少关注可变键字典结构。因此,我无法为给定的 json 编写 jmespath 查询。
实现预期结果的 jq 等效项如下:-
.people | .[] | select (.First | startswith("J")) | .last
根据我的理解,我可以从逻辑上得出的最接近的 jmespath 查询是:-
people.*[?starts_with(First,`J`)].last
但是,上面的查询返回空白结果。
预期输出是
"d","e","f"
我无法理解我哪里出错了。 如果有人能指点我一篇好文章或帮助我找到上述问题的解决方案,那就太好了。
非常感谢
【问题讨论】: