JMESPath查询:筛选firstName以指定值开头的完整JSON对象
问题原因
你之前的写法先做了字段投影[].firstName,把原数组所有对象的firstName单独摘出来组成了新的字符串数组,后续筛选自然只能拿到匹配的字符串,丢失了原对象的其他字段。
解决方案
直接在原始对象数组上做过滤即可,单条查询语句如下:
[?starts_with(firstName, 'J')]
这条语句会对每个对象的firstName字段做前缀匹配校验,符合条件的完整对象会直接保留,不会丢失其他字段,执行后输出正好是你期望的结果:
[ {"firstName":"Jerry","lastName":"Johnson"}, {"firstName":"Jody","lastName":"Johnson","occupation":"Occupado","company":"Companio"} ]
多前缀匹配扩展
如果需要匹配多个前缀,不需要多次查询拼接,直接在过滤条件里用逻辑或||拼接规则即可,比如要同时匹配J和P开头的firstName,语句可以写成:
[?starts_with(firstName, 'J') || starts_with(firstName, 'P')]
内容的提问来源于stack exchange,提问作者cmcdev
相关产品推荐
相关产品推荐

