Maison > Article > développement back-end > Comment personnaliser le démarshaling JSON dans une structure spécifique dans Go ?
Dans Go, la désorganisation des données JSON dans une structure prédéfinie est simple. Cependant, que se passe-t-il si vous souhaitez personnaliser encore davantage la structure des données ? Supposons que vous disposiez des données JSON suivantes :
<code class="json">{ "Asks": [ [21, 1], [22, 1] ], "Bids": [ [20, 1], [19, 1] ] }</code>
Vous pouvez facilement définir une structure pour correspondre à cette structure :
<code class="go">type Message struct { Asks [][]float64 `json:"Asks"` Bids [][]float64 `json:"Bids"` }</code>
Cependant, vous préférerez peut-être une structure de données plus spécialisée :
<code class="go">type Message struct { Asks []Order `json:"Asks"` Bids []Order `json:"Bids"` } type Order struct { Price float64 Volume float64 }</code>
Pour démarshaler les données JSON dans cette structure spécialisée, vous pouvez implémenter l'interface json.Unmarshaler sur votre structure Order :
<code class="go">func (o *Order) UnmarshalJSON(data []byte) error { var v [2]float64 if err := json.Unmarshal(data, &v); err != nil { return err } o.Price = v[0] o.Volume = v[1] return nil }</code>
Cette implémentation spécifie que le type Order doit être décodé à partir d'un tableau de flotteurs à deux éléments plutôt que de la représentation par défaut d'une structure (un objet).
Exemple d'utilisation :
<code class="go">m := new(Message) err := json.Unmarshal(b, &m) fmt.Println(m.Asks[0].Price) // Output: 21</code>
En implémentant json.Unmarshaler, vous pouvez facilement personnaliser le processus de désorganisation en fonction de vos exigences spécifiques en matière de structure de données.
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!