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

Wie serialisiere ich gemischte JSON-Arrays in Go?

Patricia Arquette
Freigeben: 2024-12-07 07:01:12
Original
257 Leute haben es durchsucht

How to Serialize Mixed-Type JSON Arrays in Go?

So serialisieren Sie ein gemischtes JSON-Array in Go

Herausforderung

Erstellen eines JSON Arrays, die heterogene Daten darstellen, z. B. eine Mischung aus Zeichenfolgen, Gleitkommazahlen und Unicode-Zeichen, können in Go eine Herausforderung darstellen Es fehlt die Unterstützung für gemischte Typen in Arrays.

Lösung

Um diese Einschränkung zu überwinden, können wir den anpassbaren JSON-Serialisierungsmechanismus von Go nutzen, indem wir json.Marshaler und json implementieren .Unmarshaler-Schnittstellen. Indem wir diese Funktionen für unseren benutzerdefinierten Typ definieren, erhalten wir Kontrolle darüber, wie unsere Daten serialisiert und deserialisiert werden.

Serialisierung (Marshaling)

Zur Serialisierung unserer gemischten Datentypen In ein JSON-Array erstellen wir eine MarshalJSON-Funktion für unseren benutzerdefinierten Typ. In dieser Funktion erstellen wir ein Zwischensegment aus interface{}-Elementen und füllen es mit den Werten, die wir serialisieren möchten. Anschließend verwenden wir die json.Marshal-Funktion auf dem Slice, um die JSON-Darstellung unserer Daten zu generieren.

Deserialisierung (Unmarshaling)

In ähnlicher Weise erstellen wir für die Deserialisierung eine UnmarshalJSON-Funktion. Hier verwenden wir zunächst die Funktion json.Unmarshal, um die eingehenden JSON-Bytes in den Zwischenabschnitt der Interface{}-Elemente zu analysieren. Anschließend extrahieren wir die Werte manuell aus dem Slice und weisen sie den Feldern unseres benutzerdefinierten Typs zu.

Beispiel

Das folgende Beispiel zeigt, wie ein Mixed serialisiert und deserialisiert wird -Typ-Datenstruktur:

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)
}

func main() {
    rows := []Row{
        {"ooid1", 2.0, "Söme text"},
        {"ooid2", 1.3, "Åther text"},
    }
    marshalled, _ := json.Marshal(rows)
    fmt.Println(string(marshalled))
}
Nach dem Login kopieren

Schlussfolgerung

Durch Implementierung Mit den Schnittstellen json.Marshaler und json.Unmarshaler erhalten wir die Flexibilität, gemischte Datenstrukturen in Go zu verarbeiten. Dieser Ansatz ermöglicht es uns, den Serialisierungs- und Deserialisierungsprozess anzupassen und so das gewünschte JSON-Array-Format zu erzeugen.

Das obige ist der detaillierte Inhalt vonWie serialisiere ich gemischte JSON-Arrays 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