Heim >Backend-Entwicklung >Golang >Wie serialisiere und deserialisiere ich gemischte 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!