首頁 > 後端開發 > Golang > 如何在 Go 中為 Terraform 產生動態 JSON 欄位標籤?

如何在 Go 中為 Terraform 產生動態 JSON 欄位標籤?

Mary-Kate Olsen
發布: 2024-12-13 22:54:17
原創
933 人瀏覽過

How to Generate Dynamic JSON Field Tags in Go for Terraform?

在 Go 中產生動態 JSON 欄位標籤

在 Go 中,欄位標籤用於 JSON 編組,以指定結構體欄位如何對應到 JSON 鍵。但是,在處理 Terraform JSON 時,有時字段名稱可能是動態的或在編譯時未知。使用欄位標籤產生 JSON 時,這可能會帶來挑戰。

使用靜態欄位標籤的目前方法

提供的程式碼示範了使用欄位標籤為 Terraform 檔案產生 JSON 的嘗試。但是,像web1 這樣的動態識別碼會出現問題,因此無法為此類名稱定義靜態欄位標籤:

type Resource struct {
    AwsResource AwsResource `json:"aws_instance,omitempty"` // Static
}

type AwsResource struct {
    AwsWebInstance AwsWebInstance `json:"web1,omitempty"` // Dynamic
}
登入後複製

替代:使用地圖

處理動態欄位名稱,替代策略必須受僱。一個可行的選擇是利用映射:

type Resource struct {
    AWSInstance map[string]AWSInstance `json:"aws_instance"` // Map of dynamic instance names and their configuration
}

type AWSInstance struct {
    AMI string `json:"ami"`
    Count int `json:"count"`
    SourceDestCheck bool `json:"source_dest_check"`
}
登入後複製

在這種方法中,Resource 結構中的 AWSInstance 欄位是一個映射動態實例名稱(例如「web1」、「web2」等)的對應。到各自的配置。

用法範例

要產生所需的 JSON,可以填入地圖動態:

r := Resource{
    AWSInstance: map[string]AWSInstance{
        "web1": AWSInstance{
            AMI:   "qdx",
            Count: 2,
        },
    },
}
登入後複製

然後可以對該映射進行編組以產生所需的 JSON 輸出。提供了一個 Playground 範例以供進一步說明。

透過利用映射,這種方法允許使用動態鍵靈活地編組 JSON,有效解決 Go 中可變字段標籤的挑戰。

以上是如何在 Go 中為 Terraform 產生動態 JSON 欄位標籤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板