Maison  >  Article  >  développement back-end  >  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
DDDoriginal
2024-10-26 16:21:30572parcourir

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
}

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
}

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"}

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"},
}

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!

Déclaration:
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