Maison >développement back-end >Golang >Comment désorganiser un objet JSON dans une structure avec une carte de tranches ?
Un démarshalage personnalisé est nécessaire pour décoder JSON en une structure avec une carte de tranches. En utilisant le comportement par défaut, la carte reste vide.
Utilisation d'un Unmarshaler personnalisé :
Dans la méthode UnmarshalJSON :
Solution alternative (sans utiliser de carte) :
Si la structure JSON est corrigée, la structure cible peut être ajustée pour correspondre à la disposition JSON sans utiliser de carte.
Exemple :
Code de démarshaling personnalisé à l'aide de la méthode UnmarshalJSON personnalisée :
<code class="go">func (r *OHLC_RESS) UnmarshalJSON(d []byte) error { // Decode keys and values var obj map[string]json.RawMessage if err := json.Unmarshal(d, &obj); err != nil { return err } // Extract "last" field if last, ok := obj["last"]; ok { if err := json.Unmarshal(last, &r.Last); err != nil { return err } delete(obj, "last") } // Decode and assign Pair field 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>
Solution alternative en ajustant la structure :
<code class="go">type OHLC_RESS struct { Pair []Candles `json:"XXBTZUSD"` Last int64 `json:"last"` }</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!