Heim >Backend-Entwicklung >Golang >Wie serialisiere und deserialisiere ich gemischte JSON-Arrays in Go?

Wie serialisiere und deserialisiere ich gemischte JSON-Arrays in Go?

Barbara Streisand
Barbara StreisandOriginal
2024-12-10 13:38:10875Durchsuche

How to Serialize and Deserialize Mixed-Type JSON Arrays in Go?

Serialisieren Sie ein JSON-Array gemischten Typs in Go

Serialisieren Sie in Go ein JSON-Array gemischten Typs, das Zeichenfolgen, Gleitkommazahlen und Unicode-Zeichen enthält , kann eine Herausforderung darstellen. Während Python Arrays gemischter Typen zulässt, fehlt Go diese Funktion.

Serialisierung mit MarshalJSON

Um die Serialisierung anzupassen, bietet Go die json.Marshaler-Schnittstelle. Durch die Implementierung dieser Schnittstelle können wir angeben, wie unsere Struktur Row codiert werden soll. In diesem Fall möchten wir es als Array heterogener Werte codieren.

type Row struct {
    Ooid  string
    Score float64
    Text  string
}

func (r *Row) MarshalJSON() ([]byte, error) {
    arr := []interface{}{r.Ooid, r.Score, r.Text}
    return json.Marshal(arr)
}

MarshalJSON verwendet einen Zwischenabschnitt von interface{}, um die gemischten Werte zu codieren, und gibt die codierten JSON-Bytes zurück.

Deserialisierung mit UnmarshalJSON

Zur Deserialisierung von JSON-Bytes zurück zu Strukturen, Go stellt die json.Unmarshaler-Schnittstelle bereit.

func (r *Row) UnmarshalJSON(bs []byte) error {
    arr := []interface{}{}
    json.Unmarshal(bs, &arr)
    // TODO: add error handling here.
    r.Ooid = arr[0].(string)
    r.Score = arr[1].(float64)
    r.Text = arr[2].(string)
    return nil
}

UnmarshalJSON verwendet einen ähnlichen Zwischenabschnitt der Schnittstelle{}, um die JSON-Werte zu dekodieren und die Zeilenstruktur zu füllen.

Durch die Implementierung dieser Schnittstellen erhalten wir die Kontrolle über den Serialisierungs- und Deserialisierungsprozess, sodass wir in Go mit Arrays gemischter Typen arbeiten können.

Das obige ist der detaillierte Inhalt vonWie serialisiere und deserialisiere ich gemischte JSON-Arrays in Go?. 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