"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment diviser un champ JSON en une tranche de chaîne lors du démarshalage dans Golang ?

Comment diviser un champ JSON en une tranche de chaîne lors du démarshalage dans Golang ?

Publié le 2024-11-24
Parcourir:670

How to Split a JSON Field into a String Slice During Unmarshaling in Golang?

Démarshalage personnalisé avec fractionnement de chaîne dans Golang

Problème :

Gestion du démarshalling JSON lorsqu'on Le champ nécessite d'être divisé en tranche à l'aide d'opérations sur les chaînes. Plus précisément, le champ « sujets » dans le JSON fourni nécessite d'être divisé sur « - » pour créer une []chaîne.

Solution :

Pour y parvenir, nous pouvons définissez un type de tranche de chaîne personnalisé et implémentez l'interface json.Unmarshaler pour celui-ci. Voici comment procéder :

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
}

Ce type personnalisé nous permettra de désorganiser le champ "sujets" sous forme de chaîne, puis de le diviser automatiquement en tranche.

Struct révisé :

Maintenant, nous pouvons mettre à jour notre structure Student pour utiliser le type strslice personnalisé pour le champ "sujets":

type Student struct {
    StudentNumber int      `json:"student_number"`
    Name          string   `json:"name"`
    Subjects      strslice `json:"subjects"`
}

Utilisation :

Avec ces modifications, nous pouvons désormais désorganiser le JSON fourni et diviser automatiquement le champ « Sujets » :

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

Sortie :

{1234567 John Doe [Chemistry Maths History Geography]} 

Cette approche fournit un moyen propre et personnalisable de gérer les transformations de champs tout en désorganisant les données JSON.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3