我正在尝试使用AWS步骤函数中的InputPath过滤器来选择JSON状态输入的一部分,以便与JSONPath表达式一起使用。
数据
[
{
"ticker": "DE30_EUR",
"granularity": "M"
},
{
"ticker": "DE30_EUR",
"granularity": "W"
},
{
"ticker": "DE30_EUR",
"granularity": "D"
},
{
"ticker": "DE30_EUR",
"granularity": "H1"
}
]
当前JSONPath表达式
$[?(@.granularity==H1),?(@.granularity==D),?(@.granularity==W)]
这在使用具有上述数据的AWS步骤函数数据流模拟器时起作用,并且仅返回粒度为"0"的数组项;H1"D";或";W";。
问题
但是,当将其与步骤函数一起用作InputPath或OutputPath时,它会返回一个与数据流模拟器不同的空数组。
尝试以下JSONPath
$[?(@.granularity=='H1'|| @.granularity=='D' || @.granularity=='W')]
以下引用自aws文档,这个限制我很难理解。
引用路径是一种路径,其语法受到限制,只能识别JSON结构中的单个节点:
只能使用点(.(和方括号([](表示法访问对象字段。
运算符@..,:?*不支持。
不支持length((等函数。
参考:
https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-paths.html