我正在创建自定义 Terraform 提供程序,我遇到了这个问题。我试图将一个schema.TypeList字段转换为一个结构,TypeList 看起来像这样:
"template": {
Type: schema.TypeList,
Required: true,
ForceNew: false,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"lists_test": {
Type: schema.TypeSet,
Required: true,
ForceNew: false,
Elem: &schema.Schema{
Type: schema.TypeString,
},
},
"name_test": {
Type: schema.TypeString,
Required: true,
ForceNew: false,
},
},},
我试图对齐的结构看起来像这样:
type TestStruct struct {
NameTest string `json:"name_test"`
ListsTests []string `json:"lists_test"`
}
我尝试了几种解决方案,例如我尝试将其解组为 json。像下面这样的东西:
template := d.Get("template").([]interface{})[0].(map[string]interface{})
templateStr, err := json.Marshal(template)
templateConverted := &TestStruct{}
json.Unmarshal(template, templateConverted)
但是,我收到一个错误json: unsupported type: SchemaSetFunc,这可能是因为它试图编组一个schema.Schema类型而不是 map[string]interface{} 类型,这让我感到困惑。我也尝试使用gohcl.DecodeBody但我放弃了这个想法,因为它的用法似乎更倾向于读取直接 tf 文件而不是*schema.ResourceData类型。
有没有人有处理这种情况的相同经验?任何帮助或建议表示赞赏。谢谢!
冉冉说
相关分类