Wie kann ich das JSON-Unmarshaling mit String Split in Go anpassen?

Linda Hamilton
Freigeben: 2024-10-26 04:23:02
Original
483 Leute haben es durchsucht

How to Customize JSON Unmarshaling with String Split in Go?

Benutzerdefiniertes Unmarshaling mit String-Split in Go

Beim Umgang mit JSON-Daten besteht oft die Notwendigkeit, den Unmarshaling-Prozess für bestimmte Zwecke zu transformieren oder anzupassen Datentypen. In diesem Fall möchten wir beim Unmarshalling einen JSON-String mit durch Kommas getrennten Werten in ein []String-Slice aufteilen.

Um dies zu erreichen, implementieren wir einen benutzerdefinierten Unmarshaler für den []String-Typ:

<code class="go">type strslice []string

func (ss *strslice) UnmarshalJSON(data []byte) error {
    var s string
    if err := json.Unmarshal(data, &s); err != nil {
        return err
    }
    *ss = strings.Split(s, "-")
    return nil
}</code>
Nach dem Login kopieren

Dieser benutzerdefinierte Unmarshaler nimmt die JSON-Rohdaten als Eingabe und wandelt sie in einen String-Slice um, indem er sie anhand des angegebenen Trennzeichens (in diesem Fall „-“) aufteilt.

In unserer ursprünglichen Struktur können wir jetzt diesen benutzerdefinierten Typ für das Feld „Subjekte“ verwenden:

<code class="go">type Student struct {
    StudentNumber int      `json:"student_number"`
    Name          string   `json:"name"`
    Subjects      strslice `json:"subjects"`
}</code>
Nach dem Login kopieren

Dadurch können wir die JSON-Daten direkt in der Struktur entmarshalieren, wobei das Feld „Subjekte“ automatisch in einzelne Zeichenfolgen aufgeteilt wird:

<code class="go">json := `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}`
var s Student
if err := json.Unmarshal([]byte(json), &s); err != nil {
    panic(err)
}
fmt.Println(s) // Output: {1234567 John Doe [Chemistry Maths History Geography]}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich das JSON-Unmarshaling mit String Split in Go anpassen?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!