Heim >Backend-Entwicklung >Golang >Wie serialisiere ich ein gemischtes JSON-Array in Go?

Wie serialisiere ich ein gemischtes JSON-Array in Go?

Linda Hamilton
Linda HamiltonOriginal
2024-12-11 09:29:10124Durchsuche

How to Serialize a Mixed-Type JSON Array in Go?

Serialisieren Sie ein gemischtes JSON-Array in Go

In Go wird ein heterogenes Array aus Zeichenfolgen, Gleitkommazahlen und Unicode-Zeichen serialisiert Ein JSON-Array könnte aufgrund der fehlenden integrierten Unterstützung für Arrays gemischter Typen eine Herausforderung darstellen. Durch die Implementierung der json.Marshaler-Schnittstelle können wir jedoch anpassen, wie Objekte serialisiert werden, um dies zu erreichen.

Implementierung der MarshalJSON-Methode

Um eine Struktur wie Row as zu serialisieren Um ein Array von Arrays zu erstellen, erstellen wir eine MarshalJSON-Methode für den Row-Typ. Diese Methode konvertiert die Row-Struktur in ein Array generischer Schnittstellenwerte und serialisiert sie dann mit json.Marshal:

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

Beispielverwendung

Mit der MarshalJSON-Methode in An dieser Stelle können wir einen Teil der Zeilenelemente in einen gültigen JSON serialisieren array:

rows := []Row{{"ooid1", 2.0, "Söme text"}, {"ooid2", 1.3, "Åther text"}}
marshalled, _ := json.Marshal(rows)

// Output:
// {"results": [["ooid1", 2.0, "Söme text"], ["ooid2", 1.3, "Åther text"]]}

Unmarshaling von JSON

Bei Bedarf können wir auch die json.Unmarshaler-Schnittstelle implementieren, um JSON-Daten wieder in Zeilenstrukturen zu deserialisieren. Dies beinhaltet einen ähnlichen Ansatz, bei dem ein Zwischensegment von Schnittstellenwerten verwendet wird, um die aus dem JSON-Array extrahierten Werte zu speichern:

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
}

Durch die Implementierung der Schnittstellen json.Marshaler und json.Unmarshaler können wir effektiv serialisieren und deserialisieren Arrays gemischter Typen in Go, die es uns ermöglichen, Datenstrukturen mit heterogenen Elementen als JSON zu bearbeiten.

Das obige ist der detaillierte Inhalt vonWie serialisiere ich ein gemischtes JSON-Array 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