Heim > Backend-Entwicklung > Golang > Wie teile ich ein JSON-Feld beim Unmarshaling in Golang in ein String-Slice auf?

Wie teile ich ein JSON-Feld beim Unmarshaling in Golang in ein String-Slice auf?

Susan Sarandon
Freigeben: 2024-10-27 03:20:30
Original
1001 Leute haben es durchsucht

How to Split a JSON Field into a String Slice During Unmarshaling in Golang?

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

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

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

Ausgabe:

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

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!

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