Heim  >  Artikel  >  Backend-Entwicklung  >  Hier 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

Hier 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

Susan Sarandon
Susan SarandonOriginal
2024-10-25 11:02:02565Durchsuche

Here are a few title options in a question format, catering to the content of your provided article:

**Direct &  Problem-Focused:**

* **How to Unmarshal a Map of Slices in Go When Keys are Dynamic?**
* **Empty Map After Unmarshaling: Why is my Go Struct

Benutzerdefiniertes Unmarshaling von Struct in Map of Slices

Problembeschreibung

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.

Lösung

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!

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