Maison >développement back-end >Golang >Comment puis-je personnaliser une structure dans une carte de tranches dans Go lorsque les clés JSON ne correspondent pas aux noms des champs de structure ?
Lorsque vous traitez des données JSON, vous pouvez rencontrer des scénarios dans lesquels vous devez mapper des éléments spécifiques de l'objet JSON à un champ qui correspond à votre structure de données. Cependant, le mécanisme de démarshaling JSON par défaut ne répond pas toujours à ces exigences. C'est là que le démarshalage personnalisé entre en jeu.
Dans l'exemple fourni, vous avez une structure OHLC_RESS avec un champ de carte Pair attendant des tranches de bougies comme valeurs. Cependant, le code initial ne parvient pas à remplir la carte Pair.
Le comportement de démarshaling provient de plusieurs facteurs :
Pour résoudre ces problèmes, vous pouvez exploiter l'interface json.Unmarshaler en implémentant la méthode appropriée dans votre structure :
<code class="go">func (r *OHLC_RESS) UnmarshalJSON(d []byte) error { // Decode JSON object keys and values into raw messages. var obj map[string]json.RawMessage if err := json.Unmarshal(d, &obj); err != nil { return err } // Handle the "last" field. if last, ok := obj["last"]; ok { if err := json.Unmarshal(last, &r.Last); err != nil { return err } delete(obj, "last") } // Unmarshal the remaining elements into the Pair map. r.Pair = make(map[string][]Candles, len(obj)) for key, val := range obj { cc := []Candles{} if err := json.Unmarshal(val, &cc); err != nil { return err } r.Pair[key] = cc } return nil }</code>
Cette solution :
En implémentant cette désorganisation personnalisée, vous gagnez la flexibilité nécessaire pour contrôler la façon dont les éléments JSON spécifiques sont mappé à la structure de données souhaitée, même lorsque la structure de l'objet JSON ne s'aligne pas directement avec elle.
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!