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

DDD
Freigeben: 2024-10-26 16:21:30
Original
580 Leute haben es durchsucht

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

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

type Student struct {
    StudentNumber int
    Name          string
    Subjects      SubjectSlice
}
Nach dem Login kopieren

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

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

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!