Désorganisation des structures intégrées dans Go
Cet article aborde le problème de la désorganisation des données JSON dans une structure qui contient une structure intégrée. L'exemple fourni, dans lequel la structure Inner est intégrée dans la structure Outer, montre que la méthode UnmarshalJSON par défaut pour Inner est appelée et que seul le champ Data est renseigné, laissant le champ Num de Outer vide.
La raison car ce comportement réside dans le mécanisme de structure intégré de Go. Lorsqu'une structure intégrée est désorganisée, le processus de désorganisation cible directement la structure intégrée et ignore les champs de la structure externe.
Pour résoudre ce problème, une solution plus simple et plus efficace est proposée : faire de la structure interne un champ explicite. dans la structure externe.
En déclarant explicitement Inner comme champ, la méthode UnmarshalJSON de la structure externe est appelée avec l'intégralité des données JSON. Dans cette méthode, le champ Data d'Inner peut être renseigné à l'aide de la méthode UnmarshalJSON de la structure Inner intégrée, tandis que le champ Num peut être renseigné séparément. Cette approche garantit que les deux champs de la structure externe sont correctement renseignés lors du démarshalling.
Voici un exemple fonctionnel pour illustrer la solution :
<code class="go">type Outer struct { I Inner // Inner as explicit field Num int `json:"Num"` }</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!