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

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

Susan Sarandon
Libérer: 2024-10-27 03:20:30
original
891 Les gens l'ont consulté

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

Unmarshal personnalisé avec String Split dans Golang

Problème :

Gestion du démarshall 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 de le diviser 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 :

<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 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 » :

<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

Utilisation :

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

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

Sortie :

{1234567 John Doe [Chemistry Maths History Geography]} <nil>
Copier après la connexion

Ce Cette approche fournit un moyen propre et personnalisable de gérer les transformations de champs tout en désorganisant les données 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
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!