如何使用JMESPath过滤数组中b属性为非空数组的元素?
使用JMESPath过滤空数组元素的解决方案
嘿,这个需求用JMESPath的过滤表达式就能轻松实现,有两种简洁的写法都能达到目的:
方法一:检查数组长度
直接使用以下表达式:
[?length(b) > 0]
逻辑解释:
[]表示遍历输入的整个数组?是JMESPath的过滤操作符,用来筛选符合条件的元素length(b) > 0会检查每个元素中b属性的数组长度是否大于0,只有非空数组的元素会被保留
方法二:利用布尔隐式转换
JMESPath里空数组在布尔判断中会被视为false,非空数组则是true,所以可以用更简洁的表达式:
[?b]
效果验证
把你的输入数组:
[ { "a": "foo", "b": [ 1, 2, 3 ] }, { "a": "bar", "b": [ ] }, { "a": "baz", "b": [ 2 ] } ]
用上面任意一个表达式处理后,都会得到你想要的结果:
[ { "a": "foo", "b": [ 1, 2, 3 ] }, { "a": "baz", "b": [ 2 ] } ]
内容的提问来源于stack exchange,提问作者James World
相关产品推荐
相关产品推荐

