ホームページ >バックエンド開発 >Golang >フィールドタグを使用して Go で動的 JSON キーをマーシャリングするにはどうすればよいですか?

フィールドタグを使用して Go で動的 JSON キーをマーシャリングするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-11 07:24:09267ブラウズ

How Can I Marshal Dynamic JSON Keys in Go Using Field Tags?

Go で動的 JSON フィールド タグをマーシャリングする: 課題を克服する

Go で JSON データを扱う場合、JSON 文字列を手動で構築するよりもマーシャリングが優先されることがよくあります。これは、インフラストラクチャ構成を表現するために使用される Terraform JSON 形式にも当てはまります。ただし、提供された例のランダムな「web1」名など、動的 JSON キーに遭遇すると、一般的な課題が発生します。

提起される質問は次のとおりです。Go のフィールド タグを使用して、このような動的 JSON キーを処理する方法(例: json:"aws_instance")?

フィールドの制限タグ

残念ながら、Go のフィールド タグは動的キーを直接サポートしていません。提供されているソリューションは、フィールド タグを使用して静的キー (「resource」と「aws_instance」) を表現しようとしますが、動的キー「web1」に対処できません。

代替アプローチ

としてあるいは、答えは、マップを使用して動的キーを表現し、値を割り当てられるようにすることを提案しています。 runtime.

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"`
}

この例では、AWSInstance は動的名 (例: "web1") をキーとするマップになります。その後、必要に応じてマップに特定の値を入力できます。

r := Resource{
    AWSInstance: map[string]AWSInstance{
        "web1": AWSInstance{
            AMI:   "qdx",
            Count: 2,
        },
    },
}

マップを使用すると、動的 JSON キーを Go で簡単に処理でき、フィールド タグが不十分なシナリオでマーシャリングを効果的に使用できるようになります。

以上がフィールドタグを使用して Go で動的 JSON キーをマーシャリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。