0

鉴于此文件:

{
  "k1": "v1",
  "k2": "v2",
  "k3": "v3",
  "k4": {
    "k4.1": "v4.1",
    "k4.2": "v4.2",
    "k4.3": "v4.3"
  }
}

我需要以这种确切的形式提取这个子集:

{
  "k2": "v2",
  "k3": "v3",
  "k4.1": "v4.1"
  "k4.2": "v4.2"
}

但是,尽管搜索/实验了一天多,我还是无法辨别正确的咒语。

这个表达式:$['k2', 'k3']给了我两个顶级元素:

{
  "k2" : "v2",
  "k3" : "v3"
}

这个表达式:$['k4']['k4.1','k4.2']给了我两个嵌套元素:

{
  "k4.1" : "v4.1",
  "k4.2" : "v4.2"
}

但是如何将这两个表达式组合成一个包含多个级别结果的表达式呢?

不幸的是,我使用的工具(AWS 状态语言路径)的性质要求使用单个 xpath 表达式来完成。

4

1 回答 1

1

我认为它不起作用的原因是 Path 只指定了一个路径,你不能在一个表达式中附加多个路径。

您可以使用参数为您的任务输入定义自定义/静态架构。流程如下State-Input->InputPath->Parameters。

使用您提供的输入,以及仅回显输入的 Lambda 函数,以下内容对我有用:

{
    "StartAt": "HelloWorld",
    "States": {
        "HelloWorld": {
            "Type": "Task",
            "Resource": "arn:aws:lambda:us-east-1:XXXXXXXXX:function:LambdaFunctionToEchoInput",
            "Parameters": {
                "k2.$": "$.k2",
                "k3.$": "$.k3",
                "k4.1.$": "$.k4.['k4.1']",
                "k4.2.$": "$.k4.['k4.2']"
            },
            "End": true
        }
    }
}
于 2018-12-19T21:34:09.603 回答