You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:在AWS Step Functions的Map状态中解析字符串化JSON

解决AWS Step Functions Map状态解析字符串化JSON的问题

方案1:使用Step Functions内置States.StringToJson函数解析

Step Functions自带JSON处理内置函数,无需额外服务即可完成字符串化JSON的解析,再提取目标数组供Map状态使用。

方式1:通过Pass状态预处理数据

在Lambda调用步骤后添加一个Pass状态,完成字符串转JSON和Data数组的提取:

{
  "Type": "Pass",
  "Parameters": {
    "Data.$": "States.StringToJson($.requests).Data"
  },
  "ResultPath": "$.processedData",
  "Next": "YourMapState"
}

后续Map状态只需将ItemsPath设为$.processedData,就能直接迭代Data数组内的每一项。

方式2:直接在Map状态中处理输入

如果不想新增Pass状态,可直接在Map状态的ItemsPath中嵌套函数调用:

{
  "Type": "Map",
  "ItemsPath": "States.StringToJson($.requests).Data",
  "Iterator": {
    // 此处编写你的迭代处理逻辑
  },
  "Next": "NextState"
}

方案2:修改Lambda返回结构化JSON(最直接)

若有权限调整Lambda代码,直接让Lambda返回解析后的JSON对象,而非字符串化结果:
原返回格式:{"requests": "{\"Data\":[{...}]}"}
修改后返回:{"requests": {"Data": [{...}]}}
这种情况下,Step Functions拿到的是直接可用的结构化数据,Map状态只需设置ItemsPath: "$.requests.Data"即可直接迭代。

注意事项

  • 确保States.StringToJson处理的字符串是合法JSON格式,若Lambda返回的字符串存在语法错误,会导致状态机执行失败,需提前验证字符串合法性。
  • 使用内置函数时,需严格遵循Step Functions的Path语法,函数调用必须放在Path表达式中,前缀为States.。

内容的提问来源于stack exchange,提问作者bellotto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 15:59:58