如何用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
相关产品推荐
相关产品推荐

