Maison > développement back-end > Golang > le corps du texte

Comment personnaliser le démarshaling JSON avec String Split dans Go ?

Linda Hamilton
Libérer: 2024-10-26 04:23:02
original
483 Les gens l'ont consulté

How to Customize JSON Unmarshaling with String Split in Go?

Unmarshal personnalisé avec String Split in Go

Lorsque vous traitez des données JSON, il est souvent nécessaire de transformer ou de personnaliser le processus de démarshaling pour des besoins spécifiques. types de données. Dans ce cas, nous souhaitons diviser une chaîne JSON contenant des valeurs séparées par des virgules en une tranche de chaîne [] lors du démarchage.

Pour y parvenir, implémentons un démarshaler personnalisé pour le type de chaîne [] :

<code class="go">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
}</code>
Copier après la connexion

Ce démarshaler personnalisé prend les données JSON brutes en entrée et les convertit en une tranche de chaînes en les divisant sur le délimiteur spécifié ("-" dans ce cas).

Dans notre structure d'origine , nous pouvons maintenant utiliser ce type personnalisé pour le champ Sujets :

<code class="go">type Student struct {
    StudentNumber int      `json:"student_number"`
    Name          string   `json:"name"`
    Subjects      strslice `json:"subjects"`
}</code>
Copier après la connexion

Cela nous permet de désorganiser les données JSON directement dans la structure, le champ Sujets étant automatiquement divisé en chaînes individuelles :

<code class="go">json := `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}`
var s Student
if err := json.Unmarshal([]byte(json), &s); err != nil {
    panic(err)
}
fmt.Println(s) // Output: {1234567 John Doe [Chemistry Maths History Geography]}</code>
Copier après la connexion

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!