Heim >Backend-Entwicklung >Golang >Wie serialisiere und deserialisiere ich heterogene JSON-Arrays in Go?
Serialisierung heterogener JSON-Arrays in Go
In Go Serialisierung heterogener JSON-Arrays (die eine Mischung aus Zeichenfolgen, Zahlen und Unicode-Zeichen enthalten) stellt eine Herausforderung dar, da die Sprache gemischte Slices verbietet. Betrachten Sie die folgende gewünschte JSON-Struktur:
{ results: [ ["ooid1", 2.0, "Söme text"], ["ooid2", 1.3, "Åther text"], ] }
Serialisierung mit einer Marshaler-Schnittstelle
Um die Serialisierung anzupassen, können wir die json.Marshaler-Schnittstelle für unseren Zeilentyp implementieren. Wir verwenden einen Zwischenabschnitt von interface{}, um die heterogenen Werte zu codieren:
package main import ( "encoding/json" "fmt" ) 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) }
In diesem Beispiel konvertiert die MarshalJSON-Methode die Zeile in ein Array gemischter Typen.
Deserialisierung mit einer Unmarshaler-Schnittstelle
Wir können die json.Unmarshaler-Schnittstelle auf ähnliche Weise implementieren Zerstöre die heterogenen Werte:
func (r *Row) UnmarshalJSON(bs []byte) error { arr := []interface{}{} json.Unmarshal(bs, &arr) r.Ooid = arr[0].(string) r.Score = arr[1].(float64) r.Text = arr[2].(string) return nil }
Diese Methode konvertiert die JSON-Bytes zurück in unsere Zeilenstruktur.
Das obige ist der detaillierte Inhalt vonWie serialisiere und deserialisiere ich heterogene JSON-Arrays in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!