给出此文档:
{
"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 State Language paths)的性质要求使用单个xpath表达式来完成。
答案 0 :(得分:1)
我认为它不起作用的原因是Path仅指定一个路径,不能在单个表达式中附加多个路径。
您可以使用Parameters定义用于输入任务的自定义/静态模式。流程如下所示: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
}
}
}