Maison >développement back-end >Golang >Comment personnaliser le démarshaling JSON avec String Split dans 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>
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>
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>
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!