Step Functions中基于多类型值过滤数组的JSONPath表达式问题
Step Functions中兼容多类型的JSONPath过滤表达式
问题原因
Step Functions的JSONPath实现对类型一致性校验更严格,当value字段包含整数、数组等非字符串类型时,直接与字符串"NOT_PROVIDED"做相等/不等比较会触发「不同数据类型间无效比较」错误。
可用的JSONPath表达式
$.Context.fragments[*][?(!(type(@.value) == "STRING" && @.value == "NOT_PROVIDED"))]
表达式逻辑
- 先通过
type(@.value) == "STRING"判断value是否为字符串类型 - 仅当
value是字符串且等于"NOT_PROVIDED"时,才将该条目标记为需要过滤 - 外层的
!()取反,最终保留所有非字符串类型的value,以及字符串类型但不等于"NOT_PROVIDED"的条目
这种写法避免了跨类型比较,能在Step Functions的Pass状态中正常执行过滤逻辑。
内容的提问来源于stack exchange,提问作者thisisnotadisplayname
相关产品推荐
相关产品推荐

