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
Freigeben: 2024-10-27 05:52:29
Original
418 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Ausgabe:

{1234567 John Doe [Chemistry Maths History Geography]} <nil>
Nach dem Login kopieren

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!

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