Désérialiser JSON vers des structures embarquées dans Go
La désérialisation des données JSON dans des structures embarquées peut présenter des défis dans Golang. Prenons l'exemple struct :
<code class="go">type Outer struct { Inner Num int } type Inner struct { Data string }</code>
Lors de l'utilisation de json.Unmarshal(data, &Outer{}), seul le champ Inner n'est pas marshalé, ignorant le champ Num. Pour comprendre pourquoi cela se produit, il est important de noter qu'Inner est intégré dans Outer.
Pendant le démarshalage JSON, la bibliothèque appelle le démarshaler sur Outer, qui à son tour appelle le démarshaler sur Inner. Par conséquent, la fonction Inner.UnmarshalJSON reçoit l'intégralité de la chaîne JSON, qu'elle traite pour Inner uniquement.
Pour résoudre ce problème, faites d'Inner un champ explicite dans Outer. Cela garantit que lors du démarshaling JSON, le champ Inner est correctement démarshalé et que le champ Num est défini en fonction des données JSON :
<code class="go">Outer struct { I Inner // Make Inner an explicit field Num int `json:"Num"` }</code>
Cette modification permet le démarshaling correct des données JSON dans la structure externe, y compris les champs Intérieur et Numérique.
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!