Benutzerdefiniertes Unmarshalling mit String-Split in Golang
Problem:
Handhabung des JSON-Unmarshallings, wenn eines Das Feld erfordert die Aufteilung in ein Segment mithilfe von String-Operationen. Insbesondere erfordert das Feld „subjekte“ im bereitgestellten JSON eine Aufteilung nach „-“, um eine []Zeichenfolge zu erstellen.
Lösung:
Um dies zu erreichen, können wir Definieren Sie einen benutzerdefinierten String-Slice-Typ und implementieren Sie die json.Unmarshaler-Schnittstelle dafür. So geht's:
<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>
Mit diesem benutzerdefinierten Typ können wir das Feld „Betreff“ als Zeichenfolge entmarshalieren und es dann automatisch in ein Segment aufteilen.
Überarbeitete Struktur:
Jetzt können wir unsere Student-Struktur aktualisieren, um den benutzerdefinierten Strslice-Typ für das Feld „Betreff“ zu verwenden:
<code class="go">type Student struct { StudentNumber int `json:"student_number"` Name string `json:"name"` Subjects strslice `json:"subjects"` }</code>
Verwendung:
Mit diesen Änderungen können wir jetzt das bereitgestellte JSON entmarshalieren und das Feld „Betreff“ automatisch teilen lassen:
<code class="go">func main() { var s Student err := json.Unmarshal([]byte(src), &s) fmt.Println(s, err) } const src = `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}`</code>
Ausgabe:
{1234567 John Doe [Chemistry Maths History Geography]} <nil>
Dies Der Ansatz bietet eine saubere und anpassbare Möglichkeit, Feldtransformationen zu verarbeiten und gleichzeitig JSON-Daten zu entmarshallieren.
Das obige ist der detaillierte Inhalt vonWie teile ich ein JSON-Feld beim Unmarshaling in Golang in ein String-Slice auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!