JSONPath表达式在AWS Step Functions数据流模拟器可用但实际运行返回空数组
问题根因
AWS Step Functions 实际运行环境的JSONPath解析器严格遵循语法规范,字符串匹配值必须用单引号包裹。你当前使用的$[?(@.granularity==H1),?(@.granularity==D),?(@.granularity==W)]表达式中,H1、D、W均为字符串常量,未加单引号会被解析器识别为未定义的变量,因此无法匹配到任何条目,返回空数组。而官方数据流模拟器的解析逻辑做了宽松兼容处理,未强制要求字符串加引号,因此出现两侧运行结果不一致的情况。
修正后的可用JSONPath表达式
推荐使用逻辑OR的规范写法,可读性更强:
$[?(@.granularity=='H1' || @.granularity=='D' || @.granularity=='W')]
如果要保留你原来的逗号分隔多过滤条件写法,仅需要给每个字符串值补充单引号即可生效:
$[?(@.granularity=='H1'),?(@.granularity=='D'),?(@.granularity=='W')]
生效验证
将修正后的表达式替换原有配置到InputPath或OutputPath中,即可正常筛选出granularity为H1、D、W的3条数组条目,和模拟器运行结果一致。
内容的提问来源于stack exchange,提问作者nipy
相关产品推荐
相关产品推荐

