如何使用JSONPath过滤列表中符合super*模式的字符串?
JSONPath过滤匹配'super*'模式的数组元素
要筛选出roles数组中以super开头的元素,正确的JSONPath表达式是:
$.roles[?(@ =~ /^super.*$/)]
表达式说明:
$.roles:定位到JSON根节点下的roles数组[?()]:JSONPath的过滤语法,用于筛选数组中符合条件的元素@:指代当前遍历到的数组元素=~:正则匹配运算符(主流JSONPath实现如Jayway JsonPath均支持)/^super.*$/:正则表达式,对应你需要的super*通配符效果,匹配所有以super开头的字符串
执行这个表达式后,就能得到你想要的结果:
["super_role1", "super_role2"]
补充说明:
- 你之前尝试的
.roles['super*']语法是用来匹配对象属性名的通配符,而非数组元素的内容,所以无法实现需求。 - 部分JSONPath实现支持更简洁的字符串前缀判断语法,比如:
这种写法可读性更强,但兼容性不如正则表达式,需要看你使用的JSONPath工具是否支持。$.roles[?(@ starts with 'super')]
内容的提问来源于stack exchange,提问作者Jeremy D
相关产品推荐
相关产品推荐

