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

Wie serialisiere ich ein gemischtes JSON-Array in Go?

Linda Hamilton
Freigeben: 2024-12-11 09:29:10
Original
158 Leute haben es durchsucht

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)
}
Nach dem Login kopieren

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"]]}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage