仅当条件为真时使用 JMESPATH 获取 JSON 元素的查询
A query to get a JSON element only when a condition is true with JMESPATH
当我有一个简单的 JSON 比如:
{
"name": "Tom",
"age": 20
}
是否有任何 JMESPath 查询仅在“name”为“Tom”时获取“age”?
查询应该得到“20”,上面 JSON。
但是,如果名字不是“Tom”,例如:
{
"name": "Bob",
"age": 31
}
查询应该return "null"。
为了过滤,您需要一个数组。
您可以使用函数 to_array
.
从任何对象获取数组
然后,因为您有一个独特的对象,您可以停止过滤器创建的投影,并使用 | [0]
获取数组的第一个元素,如 pipe expressions section of the tutorial 中所述.
所以查询:
to_array(@)[?name == `Tom`].age | [0]
- 这将为 JSON 提供
20
{
"name": "Tom",
"age": 20
}
- 这将为 JSON 提供
null
{
"name": "Bob",
"age": 31
}
当我有一个简单的 JSON 比如:
{
"name": "Tom",
"age": 20
}
是否有任何 JMESPath 查询仅在“name”为“Tom”时获取“age”?
查询应该得到“20”,上面 JSON。
但是,如果名字不是“Tom”,例如:
{
"name": "Bob",
"age": 31
}
查询应该return "null"。
为了过滤,您需要一个数组。
您可以使用函数 to_array
.
然后,因为您有一个独特的对象,您可以停止过滤器创建的投影,并使用 | [0]
获取数组的第一个元素,如 pipe expressions section of the tutorial 中所述.
所以查询:
to_array(@)[?name == `Tom`].age | [0]
- 这将为 JSON 提供
20
{ "name": "Tom", "age": 20 }
- 这将为 JSON 提供
null
{ "name": "Bob", "age": 31 }