Heim  >  Artikel  >  Backend-Entwicklung  >  Wie entmarshaliere ich eine durch Kommas getrennte Zeichenfolge in Go mit benutzerdefiniertem Unmarshaling in ein Slice?

Wie entmarshaliere ich eine durch Kommas getrennte Zeichenfolge in Go mit benutzerdefiniertem Unmarshaling in ein Slice?

DDD
DDDOriginal
2024-10-26 16:21:30572Durchsuche

How to Unmarshal a Comma-Separated String into a Slice in Go Using Custom Unmarshaling?

Benutzerdefiniertes Unmarshalling mit String-Split in Go

Beim Unmarshalling von JSON in Go-Strukturen besteht das Standardverhalten darin, JSON-Werte in die entsprechende Struktur zu konvertieren Felder. Es gibt jedoch Szenarien, in denen Sie während des Unmarshalling-Vorgangs möglicherweise benutzerdefinierte Transformationen durchführen müssen.

Stellen Sie sich ein JSON-Objekt vor, bei dem „Subjekte“ als durch Kommas getrennte Zeichenfolge dargestellt werden. Um dies in eine Go-Struktur mit „subjects“ als Teil von Strings zu entmarshallen, müssen Sie den String beim Unmarshalling aufteilen.

Ein Ansatz besteht darin, einen benutzerdefinierten Unmarshaller für das Feld „subjects“ mithilfe des JSON zu implementieren. Unmarshaler-Schnittstelle. So können Sie dies erreichen:

type SubjectSlice []string

// UnmarshalJSON implements custom unmarshalling for SubjectSlice.
func (s *SubjectSlice) UnmarshalJSON(data []byte) error {
    var subjects string
    err := json.Unmarshal(data, &subjects)
    if err != nil {
        return err
    }
    *s = strings.Split(subjects, "-")
    return nil
}

Verwenden Sie in Ihrer Strukturdefinition den benutzerdefinierten Slice-Typ für das Feld „Subjekte“:

type Student struct {
    StudentNumber int
    Name          string
    Subjects      SubjectSlice
}

Wenn Sie das JSON mit diesem benutzerdefinierten Unmarshalieren unmarshaller, das Feld „subjects“ wird automatisch in einen Abschnitt von Zeichenfolgen aufgeteilt.

Betrachten Sie beispielsweise den folgenden JSON:

{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}

Unmarshaling in der Student-Struktur mit dem benutzerdefinierten Unmarshaller würde Folgendes zur Folge haben:

s := Student{
    StudentNumber: 1234567,
    Name: "John Doe",
    Subjects: []string{"Chemistry", "Maths", "History", "Geography"},
}

Durch die Implementierung benutzerdefinierter Unmarshaller können Sie komplexe Datentransformationen während des Unmarshallings verarbeiten, was es zu einem leistungsstarken Werkzeug für die Arbeit mit benutzerdefinierten Datenstrukturen in JSON macht.

Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich eine durch Kommas getrennte Zeichenfolge in Go mit benutzerdefiniertem Unmarshaling in ein Slice?. 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