Benutzerdefiniertes Unmarshaling ist erforderlich, um JSON in eine Struktur mit einer Karte von Slices zu dekodieren. Bei Verwendung des Standardverhaltens bleibt die Karte leer.
Verwenden eines benutzerdefinierten Unmarshalers:
In der UnmarshalJSON-Methode:
Alternative Lösung (keine Karte verwenden):
Wenn die JSON-Struktur festgelegt ist, kann die Zielstruktur ohne Verwendung einer Karte an das JSON-Layout angepasst werden.
Beispiel:
Benutzerdefinierter Unmarshaling-Code mit der benutzerdefinierten UnmarshalJSON-Methode:
<code class="go">func (r *OHLC_RESS) UnmarshalJSON(d []byte) error { // Decode keys and values var obj map[string]json.RawMessage if err := json.Unmarshal(d, &obj); err != nil { return err } // Extract "last" field if last, ok := obj["last"]; ok { if err := json.Unmarshal(last, &r.Last); err != nil { return err } delete(obj, "last") } // Decode and assign Pair field r.Pair = make(map[string][]Candles, len(obj)) for key, val := range obj { cc := []Candles{} if err := json.Unmarshal(val, &cc); err != nil { return err } r.Pair[key] = cc } return nil }</code>
Alternative Lösung durch Anpassen der Struktur:
<code class="go">type OHLC_RESS struct { Pair []Candles `json:"XXBTZUSD"` Last int64 `json:"last"` }</code>
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich ein JSON-Objekt in eine Struktur mit einer Slice-Karte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!