JSONPath表达式适用于数据流模拟器,但不适用于步骤函数



我正在尝试使用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

最新更新