Heim  >  Artikel  >  Backend-Entwicklung  >  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
Susan SarandonOriginal
2024-10-27 03:20:30881Durchsuche

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>

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!

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