我有一个字符串列表,需要将其转换为映射,以便以后在对它执行jsonencode
时不会创建数组。这是因为在json-schema中,properties: { ... }
不是属性列表,而是实际上的映射。
因此,列表中的每个属性都应作为键值映射出现。其中的键是属性名称,值是另一个映射或对象{“ type” =“ string”}。
additional-properties = [
for prop in local.prop-list:
{ prop = { "type" = "string" }}
]
我的第一次尝试最终是作为地图对象列表,而不是属性地图。
有更好的方法吗?
我的最终目标是能够在API网关模型的json模式中对此使用jsonencode-
"properties": {
"prop1": {
"type": "string"
},
"prop2": {
"type": "string"
}
}
答案 0 :(得分:2)
当您将additional-properties
的分配指定为:
[
for prop in local.prop-list:
{ prop = { "type" = "string" }}
]
我们可以删除lambda和变量,以查看构造函数的结果类型为:
[{{}}]
这是列表内的嵌套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迭代器映射键值对分配语法。