Terraform HCL-将列表转换为对象地图?
我有一个字符串列表,我需要将其转换为映射,这样当我稍后对其执行Terraform HCL-将列表转换为对象地图?,terraform,hcl,Terraform,Hcl,我有一个字符串列表,我需要将其转换为映射,这样当我稍后对其执行jsonencode操作时,它就不会创建数组。这是因为在json模式中,属性:{…}不是属性列表,而是一个映射 因此,我的列表中的每个属性都应该显示为键值映射。其中键是属性名,值是另一个映射或对象{“type”=“string”} 我的第一次尝试以贴图对象列表而不是属性贴图结束 有没有更好的方法来实现这一点 我的最终目标是能够在API网关模型的json模式中使用JSONECODE- "properties": {
jsonencode
操作时,它就不会创建数组。这是因为在json模式中,属性:{…}
不是属性列表,而是一个映射
因此,我的列表中的每个属性都应该显示为键值映射。其中键是属性名,值是另一个映射或对象{“type”=“string”}
我的第一次尝试以贴图对象列表而不是属性贴图结束
有没有更好的方法来实现这一点
我的最终目标是能够在API网关模型的json模式中使用JSONECODE-
"properties": {
"prop1": {
"type": "string"
},
"prop2": {
"type": "string"
}
}
将
附加属性的分配指定为:
[
for prop in local.prop-list:
{ prop = { "type" = "string" }}
]
我们可以删除lambda和变量,以查看构造函数的结果类型:
[{{}}]
这是列表中的嵌套映射
由于您需要具有{prop{type=string}
结构的嵌套映射,因此我们需要相应地指定构造函数:
additional-properties = { # outside map with "prop" key and map value
for prop in local.prop-list:
prop => { "type" = "string" } # nested map with "type" key and "string" value
}
还要注意从=
到=>
的更改,以获得正确的lambda迭代器映射键值对分配语法。谢谢,我缺少的是=>
lambda语法。
additional-properties = { # outside map with "prop" key and map value
for prop in local.prop-list:
prop => { "type" = "string" } # nested map with "type" key and "string" value
}