Benutzerdefiniertes Unmarshalling mit String-Split in Golang
Problem:
Unmarshalling von JSON in einem Golang Struktur, in der ein Zeichenfolgenfeld (z. B. „subjects“) basierend auf einem Trennzeichen (z. B. „-“) in ein Segment von Zeichenfolgen aufgeteilt werden muss.
Lösung:
Implementieren Sie einen benutzerdefinierten Unmarshaler für das Feld „Slice of Strings“. Dazu gehört die Erstellung eines neuen Datentyps, der die json.Unmarshaler-Schnittstelle implementiert:
<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>
Verwenden Sie diesen benutzerdefinierten Typ in der Struktur:
<code class="go">type Student struct { StudentNumber int `json:"student_number"` Name string `json:"name"` Subjects strslice `json:"subjects"` }</code>
Beim Unmarshalling von JSON werden nun die „subjects " Feld wird automatisch in einen Abschnitt von Zeichenfolgen aufgeteilt:
<code class="go">var s Student err := json.Unmarshal([]byte(src), &s) fmt.Println(s, err)</code>
Ausgabe:
{1234567 John Doe [Chemistry Maths History Geography]} <nil>
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich ein JSON-String-Feld in ein String-Slice in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!