Marshaling dynamischer JSON-Feld-Tags in Go
Beim Generieren von JSON für eine Terraform-Datei mithilfe des JSON-Formats kann es zu einer Herausforderung bei der Verwendung kommen dynamische JSON-Schlüssel für Ressourcen mit zufälligen oder variablen Namen. Dies liegt daran, dass die Feld-Tags von Terraform für das JSON-Marshalling statische Kennungen erfordern.
Traditionell könnte man erwägen, benutzerdefinierten Code zu verwenden, um sein eigenes JSON zu rollen, die Verwendung der vorhandenen Marshalling-Funktionen ist jedoch vorzuziehen. Es stellt sich die Frage: Wie können Sie dynamische JSON-Schlüssel mit den Feld-Tags von Go erstellen?
Lösung
Leider ist die Verwendung von Feld-Tags zur Generierung dynamischer JSON-Schlüssel in Go nicht möglich . Es gibt jedoch eine alternative Lösung: die Verwendung einer Karte.
Verwendung einer Karte
Karten in Go ermöglichen dynamische Schlüssel und sind daher ideal für diese Situation. Hier ist ein Beispiel:
type Resource struct { AWSInstance map[string]AWSInstance `json:"aws_instance"` } type AWSInstance struct { // Your instance properties here }
In diesem Beispiel ist das AWSInstance-Feld innerhalb der Ressourcenstruktur eine Zuordnung, die dynamische Zeichenfolgenschlüssel zum Speichern einzelner AWSInstance-Werte verwendet.
Beispielverwendung
r := Resource{ AWSInstance: map[string]AWSInstance{ "web1": AWSInstance{ // Initialize your instance properties }, // ... add other instances with dynamic keys }, }
Spielplatz Beispiel
Sie können ein interaktives Beispiel auf dem Go Playground erkunden: https://go.dev/play/p/e9d2O-cLsjX
Das obige ist der detaillierte Inhalt vonWie kann ich dynamische JSON-Feld-Tags in Go marshalieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!