Heim >Backend-Entwicklung >Golang >Wie entmarshaliere ich ein JSON-String-Feld in ein String-Slice in Golang?

Wie entmarshaliere ich ein JSON-String-Feld in ein String-Slice in Golang?

Barbara Streisand
Barbara StreisandOriginal
2024-10-27 05:52:29400Durchsuche

How to Unmarshal a JSON String Field into a Slice of Strings in Golang?

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!

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