如何通过EventBridge输入转换传递子对象数组?
EventBridge输入转换提取数组/子对象的正确方式
你遇到的问题是因为EventBridge的输入转换对数组类型的JSONPath处理需要用模板语法,而非直接填写裸JSONPath。
正确配置方法
要提取整个items数组,需在EventBridge规则的**输入模板(Input Template)**中使用<JSONPath>的包裹语法,步骤如下:
- 进入EventBridge规则的输入转换设置,选择「输入转换器」
- 在「输入模板」中填写:
若只需传递数组本身,也可直接写:{"items": <$.detail.sale.items>}<$.detail.sale.items> - 「输入路径」可留空;若需同时提取其他字段,再对应填写键值对即可。
为什么之前的写法无效
- 直接填写
$.detail.sale.items这类裸JSONPath时,EventBridge会默认提取单一值,但数组属于集合类型,不符合预期,因此会提示无效或无法触发规则。 $.detail.sale.items[0].quantity能成功,是因为它返回的是单个数值,属于单一值类型,匹配裸JSONPath的处理逻辑。
扩展:提取数组中的特定字段
如果需要提取数组内所有对象的某个字段(比如所有product),同样用模板语法实现:
{"products": <$.detail.sale.items[*].product>}
最终会生成包含所有product值的数组:["cheese", "tomato"]
内容的提问来源于stack exchange,提问作者chromebookdev
相关产品推荐
相关产品推荐

