Das Verständnis des JSON-Unmarshalings kann eine Herausforderung sein. In diesem Artikel wird ein Problem untersucht, das beim Unmarshaling einer Karte in Go unter Verwendung des folgenden Codeausschnitts auftritt:
<code class="go">import ( "encoding/json" "fmt" ) type OHLC_RESS struct { Pair map[string][]Candles Last int64 `json:"last"` } type Candles struct { // ... } func (c *Candles) UnmarshalJSON(d []byte) error { // ... } func main() { // ... }</code>
Beim Ausführen des Codes bleibt die Pair-Map leer, obwohl das Feld „Last“ korrekt entmarshaled wurde.
Option 1: Strukturdefinition anpassen
Die einfachste Lösung für das bereitgestellte JSON-Beispiel besteht darin, die Karte zu entfernen und die Strukturdefinition an der JSON-Struktur auszurichten:
<code class="go">type OHLC_RESS struct { Pair []Candles `json:"XXBTZUSD"` Last int64 `json:"last"` }</code>
Option 2: Benutzerdefinierten Unmarshaler implementieren
Wenn die Kartenschlüssel dynamisch sind und nicht in den Feld-Tags fest codiert werden können, eine benutzerdefinierte Implementierung des json.Unmarshaler Schnittstelle notwendig. Dies kann durch die Implementierung der UnmarshalJSON-Methode in der OHLC_RESS-Struktur erreicht werden:
<code class="go">func (r *OHLC_RESS) UnmarshalJSON(d []byte) error { // ... }</code>
Die UnmarshalJSON-Implementierung dekodiert die JSON-Schlüssel und -Werte separat und behandelt das „letzte“ Element anders als die anderen. Die verbleibenden Elemente werden in der Paarkarte entmarshallt.
Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen in einem Frageformat, die auf den Inhalt Ihres bereitgestellten Artikels zugeschnitten sind: **Direkt & problemorientiert:** * **So entmarshalieren Sie eine Slices-Karte in Go, wenn die Schlüssel Dynam sind. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!