Comprendre le démarshaling JSON peut être difficile. Cet article explore un problème rencontré lors de la désorganisation d'une carte dans Go à l'aide de l'extrait de code suivant :
<code class="go">import ( "encoding/json" "fmt" ) type OHLC_RESS struct { Pair map[string][]Candles Last int64 `json:"last"` } type Candles struct { // ... } func (c *Candles) UnmarshalJSON(d []byte) error { // ... } func main() { // ... }</code>
Lors de l'exécution du code, la carte Pair reste vide, même si le champ Dernier est correctement désorganisé.
Option 1 : Ajuster la définition de la structure
La solution la plus simple pour l'exemple JSON fourni consiste à éliminer la carte et à aligner la définition de la structure avec la structure JSON :
<code class="go">type OHLC_RESS struct { Pair []Candles `json:"XXBTZUSD"` Last int64 `json:"last"` }</code>
Option 2 : Implémenter un Unmarshaler personnalisé
Si les clés de carte sont dynamiques et ne peuvent pas être codées en dur dans les balises de champ, une implémentation personnalisée de json.Unmarshaler l'interface est nécessaire. Ceci peut être réalisé en implémentant la méthode UnmarshalJSON dans la structure OHLC_RESS :
<code class="go">func (r *OHLC_RESS) UnmarshalJSON(d []byte) error { // ... }</code>
L'implémentation UnmarshalJSON décode les clés et les valeurs JSON séparément, en traitant le "dernier" élément différemment du reste. Les éléments restants ne sont pas rassemblés dans la carte Pair.
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!