Heim > Backend-Entwicklung > Golang > Wie serialisiere und deserialisiere ich heterogene JSON-Arrays in Go?

Wie serialisiere und deserialisiere ich heterogene JSON-Arrays in Go?

Patricia Arquette
Freigeben: 2024-12-11 14:57:10
Original
469 Leute haben es durchsucht

How to Serialize and Deserialize Heterogeneous 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"],
    ]
}
Nach dem Login kopieren

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

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

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!

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