Terraform HCL - 将列表转换为对象地图?
Terraform HCL - Convert List to Map of Objects?
我有一个字符串列表,我需要将其转换为映射,这样当我稍后对其执行 jsonencode
时,它不会创建数组。这是因为在 json-schema 中 properties: { ... }
不是一个属性列表,而是一个映射。
所以我列表中的每个 属性 都应该作为键值映射出现。其中键是 属性 名称,值是另一个映射或对象 { "type" = "string" }.
additional-properties = [
for prop in local.prop-list:
{ prop = { "type" = "string" }}
]
我的第一次尝试以地图对象列表结束,而不是属性地图。
有没有更好的方法来完成这个?
我的最终目标是能够在 json 架构中使用 json 对此编码 API 网关模型 -
"properties": {
"prop1": {
"type": "string"
},
"prop2": {
"type": "string"
}
}
当您将 additional-properties
的分配指定为:
[
for prop in local.prop-list:
{ prop = { "type" = "string" }}
]
我们可以删除 lambda 和变量以查看构造函数的结果类型将是:
[{{}}]
这是一个嵌套在 List 中的 Map。
由于你想要一个具有{ prop { type = string } }
结构的嵌套Map,我们需要相应地指定构造函数:
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 迭代器映射键值对分配语法。
我有一个字符串列表,我需要将其转换为映射,这样当我稍后对其执行 jsonencode
时,它不会创建数组。这是因为在 json-schema 中 properties: { ... }
不是一个属性列表,而是一个映射。
所以我列表中的每个 属性 都应该作为键值映射出现。其中键是 属性 名称,值是另一个映射或对象 { "type" = "string" }.
additional-properties = [
for prop in local.prop-list:
{ prop = { "type" = "string" }}
]
我的第一次尝试以地图对象列表结束,而不是属性地图。
有没有更好的方法来完成这个?
我的最终目标是能够在 json 架构中使用 json 对此编码 API 网关模型 -
"properties": {
"prop1": {
"type": "string"
},
"prop2": {
"type": "string"
}
}
当您将 additional-properties
的分配指定为:
[
for prop in local.prop-list:
{ prop = { "type" = "string" }}
]
我们可以删除 lambda 和变量以查看构造函数的结果类型将是:
[{{}}]
这是一个嵌套在 List 中的 Map。
由于你想要一个具有{ prop { type = string } }
结构的嵌套Map,我们需要相应地指定构造函数:
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 迭代器映射键值对分配语法。