【问题标题】:AWS Step Functions JSON Path filter with nested object具有嵌套对象的 AWS Step Functions JSON 路径过滤器
【发布时间】:2022-10-19 01:42:14
【问题描述】:

我在 AWS Step Functions 状态机中使用 Dynamodb BatchGetItem 任务。 我需要从它的输出中获取正确的值,因为这些值将在下一个任务中用作参数。

我的问题是我需要在name.S 上过滤结果,但是当我这样做时,我没有得到任何结果。现在有没有人如何创建一个 JSONPath 来提取相应键的值。

我的输入:

{
  "Responses": {
    "Table": [
      {
        "name": {
          "S": "Param1"
        },
        "value": {
          "S": "30"
        }
      },
      {
        "name": {
          "S": "Param2"
        },
        "value": {
          "S": "40"
        }
      }
    ]
  },
  "UnprocessedKeys": {}
}

我希望这样的事情能够奏效,但事实并非如此。 $..Table[?(@.name.S == Param1)].value.S -> 30

如果我将输入更改为此:

{
  "Responses": {
    "Table": [
      {
        "name": "Param1",
        "value": {
          "S": "30"
        }
      },
      {
        "name": "Param2",
        "value": {
          "S": "40"
        }
      }
    ]
  },
  "UnprocessedKeys": {}
}

然后$..Table[?(@.name == Param1)].value.S -> 30 工作,但我不能改变输入的结构。

【问题讨论】:

    标签: amazon-web-services jsonpath aws-step-functions


    【解决方案1】:

    Map 覆盖Table 项目,用Pass 状态重塑每个项目:

    {
      "StartAt": "TableItemsMap",
      "States": {
        "TableItemsMap": {
          "Type": "Map",
          "ItemsPath": "$.Responses.Table",
          "ResultPath": "$.Responses.Table",    
          "Iterator": {
             "StartAt": "ReshapePass",
             "States": {
               "ReshapePass": {
                 "Type": "Pass",
                 "Parameters": {
                    "name.$": "$.name.S",
                    "value.$": "$.value"
                 },
                 "End": true
               }
             }
          },
          "End": true
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多