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

Terraform中如何合并列表与对象并执行jsonencode

解决方案

要实现列表与单个对象的合并,核心是把单个对象包装成单元素列表后,用concat函数合并两个列表——你之前失败大概率是直接传了单个对象而非列表,导致类型不匹配。

具体实现代码

# 定义本地变量存储中间结果(也可以直接链式调用)
locals {
  # 通过for表达式生成初始列表
  generated_items = [for x in var.variable : { "key" : x , "value" : true}]
  # 把单个对象包装成列表后,和初始列表合并
  combined_items  = concat(local.generated_items, [{ "key" : "*", "value" : true }])
  # 编码为最终JSON
  final_json     = jsonencode(local.combined_items)
}

结果验证

当var.variable = [1,2]时,local.final_json的输出为:

[{"key":1,"value":true},{"key":2,"value":true},{"key":"*","value":true}]

为什么之前的方法不适用

  • merge:用于合并对象(键值对),会按键覆盖值,完全不适合列表合并场景;
  • join:仅用于拼接字符串,不能处理列表元素为对象的情况;
  • concat:要求所有参数都是列表类型,你之前如果直接传入单个对象而非[{...}],会触发类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:31:02