Heim >Backend-Entwicklung >Golang >Wie kann ich dynamische JSON-Feld-Tags in Go marshalieren?

Wie kann ich dynamische JSON-Feld-Tags in Go marshalieren?

Susan Sarandon
Susan SarandonOriginal
2024-12-11 18:14:17289Durchsuche

How Can I Marshal Dynamic JSON Field Tags in Go?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn