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 サイトの他の関連記事を参照してください。