首页 >后端开发 >Golang >如何在 Go 中编组动态 JSON 字段标签?

如何在 Go 中编组动态 JSON 字段标签?

Susan Sarandon
Susan Sarandon原创
2024-12-11 18:14:17288浏览

How Can I Marshal Dynamic JSON Field Tags in Go?

在 Go 中编组动态 JSON 字段标签

使用 JSON 格式为 Terraform 文件生成 JSON 时,您可能会遇到使用的挑战具有随机或变量名称的资源的动态 JSON 键。出现这种情况是因为 Terraform 的 JSON 编组字段标签需要静态标识符。

传统上,人们可能会考虑使用自定义代码来滚动自己的 JSON,但是,最好使用现有的编组功能。问题来了:如何使用 Go 的字段标签创建动态 JSON 键?

解决方案

不幸的是,在 Go 中使用字段标签生成动态 JSON 键是不可能的。然而,存在另一种解决方案:使用地图。

使用地图

Go 中的地图允许动态键,这使得它们非常适合这种情况。下面是一个示例:

type Resource struct {
    AWSInstance map[string]AWSInstance `json:"aws_instance"`
}

type AWSInstance struct {
    // Your instance properties here
}

在此示例中,资源结构中的 AWSInstance 字段是一个使用动态字符串键来存储各个 AWSInstance 值的映射。

示例用法

r := Resource{
    AWSInstance: map[string]AWSInstance{
        "web1": AWSInstance{
            // Initialize your instance properties
        },
        // ... add other instances with dynamic keys
    },
}

游乐场示例

您可以在 Go Playground 上探索交互式示例:https://go.dev/play/p/e9d2O-cLsjX

以上是如何在 Go 中编组动态 JSON 字段标签?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn