Maison >développement back-end >Golang >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 ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-27 03:20:30970parcourir

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>

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>

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>

Sortie :

{1234567 John Doe [Chemistry Maths History Geography]} <nil>

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!

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