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

如何在AWS CDK Step Function栈中为JSON对象添加静态值

问题:为Magento请求的Product对象添加status字段

需要在现有JSON的magento_request.product节点下添加键值对status: 0:

现有JSON结构:

{
    "referring_website": "https://example.com",
    "magento_request": {
        "product": {
          "price": 125
        }
     }
}

期望得到的JSON结果:

{
    "referring_website": "https://example.com",
    "magento_request": {
        "product": {
          "price": 125,
          "status": 0
        }
     }
}

用户尝试的AWS CDK代码存在问题,无法正确实现需求:

this.createProduct = new SqsSendMessage(this, "Create Product ", {
  messageBody: TaskInput.fromObject({
    "data": {
       ...JsonPath.stringAt("$.magento_request.product"),
       "status": 0
     }
  }),
  ...
});

解决方案

问题根源

代码中使用了JsonPath.stringAt(),该方法会将目标对象序列化为JSON字符串,而非保留对象结构,导致扩展运算符无法正确合并键值对。

正确实现方式

方法一:使用JsonPath.objectAt()配合扩展运算符

this.createProduct = new SqsSendMessage(this, "Create Product", {
  messageBody: TaskInput.fromObject({
    "data": {
      ...JsonPath.objectAt("$.magento_request.product"),
      "status": 0
    }
  }),
  // 补充其他配置项
});

JsonPath.objectAt()会直接获取指定路径的原始对象,通过扩展运算符将原product的键值对与新的status: 0合并,得到符合要求的对象。

方法二:使用JsonPath.merge()合并对象

this.createProduct = new SqsSendMessage(this, "Create Product", {
  messageBody: TaskInput.fromObject({
    "data": JsonPath.merge(
      JsonPath.objectAt("$.magento_request.product"),
      { "status": 0 }
    )
  }),
  // 补充其他配置项
});

JsonPath.merge()会自动将两个对象合并,把第二个对象的键值对添加到第一个对象中,实现字段追加的效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 15:50:16