我需要在我的 AWS Step Functions 状态中过滤一个数组。这似乎是我应该可以通过 JsonPath 轻松实现的目标,但由于某种原因我正在苦苦挣扎。
我要处理的状态如下所示:
{
"items": [
{
"id": "A"
},
{
"id": "B"
},
{
"id": "C"
}
]
}
id
我想通过删除不在指定白名单中的条目来过滤这个数组。
为此,我Pass
通过以下方式定义状态:
"ApplyFilter": {
"Type": "Pass",
"ResultPath": "$.items",
"InputPath": "$.items.[?(@.id in ['A'])]",
"Next": "MapDeployments"
}
这利用了JsonPathin
运算符。
不幸的是,当我执行状态机时,我收到一个错误:
{
"error": "States.Runtime",
"cause": "An error occurred while executing the state 'ApplyFilter' (entered at the event id #8). Invalid path '$.items.[?(@.id in ['A'])]' : com.jayway.jsonpath.InvalidPathException: com.jayway.jsonpath.InvalidPathException: Space not allowed in path"
}
但是,我不明白语法有什么问题。当我在这里测试时,一切正常。
我所做的有什么问题?是否有另一种使用 JsonPath 实现这种过滤器的方法?