Maison > développement back-end > Golang > Comment décomposer une chaîne séparée par des virgules dans une tranche en Go à l'aide du démarshalage personnalisé ?

Comment décomposer une chaîne séparée par des virgules dans une tranche en Go à l'aide du démarshalage personnalisé ?

DDD
Libérer: 2024-10-26 16:21:30
original
722 Les gens l'ont consulté

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

Unmarshal personnalisé avec fractionnement de chaîne dans Go

Lors de la désorganisation de JSON en structures Go, le comportement par défaut consiste à convertir les valeurs JSON en structure correspondante champs. Cependant, il existe des scénarios dans lesquels vous devrez peut-être effectuer des transformations personnalisées pendant le processus de désorganisation.

Considérez un objet JSON avec des « sujets » représentés sous la forme d'une chaîne séparée par des virgules. Pour transformer cela en une structure Go avec des "sujets" sous forme de tranche de chaînes, vous devez diviser la chaîne lors de la désorganisation.

Une approche consiste à implémenter un démarshaller personnalisé pour le champ "sujets" à l'aide du json. Interface du démarshaler. Voici comment y parvenir :

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
}
Copier après la connexion

Dans la définition de votre structure, utilisez le type de tranche personnalisé pour le champ « sujets » :

type Student struct {
    StudentNumber int
    Name          string
    Subjects      SubjectSlice
}
Copier après la connexion

Lorsque vous désorganisez le JSON à l'aide de cette personnalisation unmarshaller, le champ « subjects » sera automatiquement divisé en une tranche de chaînes.

Par exemple, considérons le JSON suivant :

{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}
Copier après la connexion

Le démarshaling dans la structure Student avec le unmarshaller personnalisé entraînerait :

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

En implémentant des désorganisateurs personnalisés, vous pouvez gérer des transformations de données complexes lors du démarchage, ce qui en fait un outil puissant pour travailler avec des structures de données personnalisées en JSON.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal