Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich das JSON-Unmarshaling mit String Split in Go anpassen?

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 04:23:02477Durchsuche

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>

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>

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>

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!

Stellungnahme:
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