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

如何用Terraform将Map转换为指定格式的JSON字符串?

解决Terraform中将Map转换为指定JSON数组格式的问题

嘿,我之前刚好碰到过一模一样的需求——把Terraform里的Map变量转成docker-compose需要的那种JSON数组格式,用jsonencode配合for表达式就是最简洁的解决方案,完全能满足你的要求!

具体实现步骤

你只需要通过for表达式遍历你的container_envs Map,把每个键值对映射成{name = 键, value = 值}的对象,再用jsonencode把整个数组序列化成JSON字符串就行。直接看代码:

locals {
  # 你的原始Map变量
  container_envs = {
    ENV           = "dev"
    CONTAINER_TAG = "dev"
  }

  # 将Map转换为目标结构的数组
  container_envs_array = [
    for env_key, env_value in local.container_envs : {
      name  = env_key
      value = env_value
    }
  ]

  # 生成最终的JSON字符串
  container_envs_json = jsonencode(local.container_envs_array)
}

# 可选:输出结果验证格式是否正确
output "generated_env_json" {
  value = local.container_envs_json
}

效果验证

执行terraform output generated_env_json,你会得到完全符合要求的输出:

[{"name":"ENV","value":"dev"},{"name":"CONTAINER_TAG","value":"dev"}]

这个JSON字符串可以直接用于docker-compose相关的配置中,不管是给单个还是多个容器配置环境变量都没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:02:46