Terraform调用jsonencode生成结果含多余反斜杠问题如何解决
问题根源
你对jsonencode的使用方式存在错误:
jsonencode的作用是将Terraform原生数据结构(如map、list、布尔值、字符串等)序列化为合法JSON字符串,而非对已经拼接好的类JSON字符串做格式化- 你将手动拼接的字符串传入
jsonencode时,函数会将输入识别为普通字符串,自动对字符串内的双引号做转义处理,这就是输出中多余反斜杠的来源 - 另外你手动拼接的字符串没有给值字段包裹双引号,本身就不符合JSON语法规范,就算不转义也无法得到合法JSON
修正方案
直接将你想要输出的JSON结构定义为Terraform的map类型,再传入jsonencode即可,修正后的配置如下:
locals { meta = { ABC = var.value1 XYZ = var.value2 } } variable "value1" { type = string default = "google.com" } variable "value2" { type = string default = "yahoo.com" }
此时调用jsonencode(local.meta)得到的输出就是你预期的结果:
{"ABC":"google.com","XYZ":"yahoo.com"}
内容的提问来源于stack exchange,提问作者Amman
相关产品推荐
相关产品推荐

