Heim >Backend-Entwicklung >Golang >Wie kann ich bestimmte JSON-Werte in Go effizient extrahieren, ohne Strukturen zu verwenden?
JSON-Wertanalyse in Go
In manchen Fällen ist das Extrahieren eines bestimmten Werts aus einem JSON-Objekt ohne die Notwendigkeit einer Struktur von Vorteil. In diesem Artikel wird untersucht, wie dies in Go erreicht werden kann, und er bietet Alternativen zum traditionelleren Ansatz, zuerst das Unmarshalling in eine Struktur durchzuführen.
Option 1: Map[string]interface{}
Go bietet eine integrierte Lösung zum Speichern von JSON-Werten ohne vordefinierte Struktur. Mit der json.Unmarshal-Funktion können Sie JSON in eine Map[string]interface{} dekodieren, wobei die Schlüssel Zeichenfolgen sind, die die JSON-Feldnamen darstellen, und die Werte die entsprechenden Werte als native Go-Typen sind.
Beispiel:
b := []byte(`{"ask_price": "1.0"}`) data := make(map[string]interface{}) err := json.Unmarshal(b, &data) if err != nil { panic(err) } if price, ok := data["ask_price"].(string); ok { fmt.Println(price) } else { panic("wrong type") }
Mit diesem Ansatz können Sie direkt über den JSON-Eigenschaftsnamen auf den spezifischen Wert zugreifen, den Sie benötigen, ohne dass ein entsprechendes Strukturfeld erforderlich ist. Allerdings sind Typzusicherungen erforderlich, um sicherzustellen, dass der abgerufene Wert der erwartete Typ ist.
Option 2: Benutzerdefinierter Unmarshaler
Alternativ können Sie einen benutzerdefinierten json.Unmarshaler implementieren Schnittstelle für Ihren Zieltyp, um den Decodierungsprozess spezifischer zu handhaben. Dies bietet eine bessere Kontrolle darüber, wie die JSON-Daten in den gewünschten Go-Wert entmarshallt werden.
Beispiel:
type AskPrice struct { price string } func (a *AskPrice) UnmarshalJSON(data []byte) error { var v string if err := json.Unmarshal(data, &v); err != nil { return err } a.price = v return nil } // ...
Mit diesem Ansatz können Sie den benutzerdefinierten Unmarshaller angeben, indem Sie das entsprechende Strukturfeld mit json:"ask_price" markieren und den &-Zeiger verwenden Empfänger, um sicherzustellen, dass der decodierte Wert direkt dem Strukturfeld zugewiesen wird. Dadurch entfällt die Notwendigkeit expliziter Typzusicherungen und sorgt für ein individuelleres Unmarshalling-Erlebnis.
Durch sorgfältiges Abwägen dieser Optionen können Sie bestimmte JSON-Werte in Go effizient extrahieren, ohne sich auf vordefinierte Strukturen verlassen zu müssen.
Das obige ist der detaillierte Inhalt vonWie kann ich bestimmte JSON-Werte in Go effizient extrahieren, ohne Strukturen zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!