我正在尝试为Terraform文件生成JSON。因为我(认为我)想使用编组而不是滚动我自己的JSON,我使用Terraforms JSON格式而不是'本机' TF格式。
{
"resource": [
{
"aws_instance": {
"web1": {
"some": "data"
}
}]
}
resource
和aws_instance
是静态标识符,而本例中的web1
是随机名称。同样,也有web2
和web3
也不是不可想象的。
type Resource struct {
AwsResource AwsResource `json:"aws_instance,omitempty"`
}
type AwsResource struct {
AwsWebInstance AwsWebInstance `json:"web1,omitempty"`
}
然而问题是;我如何生成随机/变量JSON键与Go的字段标签?
我有一种感觉,答案是"你没有"。那我还有别的选择吗?在大多数情况下,如果在编译时存在未知的名称,则可以使用映射:
type Resource struct {
AWSInstance map[string]AWSInstance `json:"aws_instance"`
}
type AWSInstance struct {
AMI string `json:"ami"`
Count int `json:"count"`
SourceDestCheck bool `json:"source_dest_check"`
// ... and so on
}
下面的示例展示了如何构造用于封送的值:
r := Resource{
AWSInstance: map[string]AWSInstance{
"web1": AWSInstance{
AMI: "qdx",
Count: 2,
},
},
}
操场示例