Maison  >  Article  >  développement back-end  >  Voici quelques options de titre sous forme de questions, adaptées au contenu de l'article que vous avez fourni : **Direct et axé sur les problèmes :** * **Comment désorganiser une carte de tranches en Go lorsque les clés sont dynamiques

Voici quelques options de titre sous forme de questions, adaptées au contenu de l'article que vous avez fourni : **Direct et axé sur les problèmes :** * **Comment désorganiser une carte de tranches en Go lorsque les clés sont dynamiques

Susan Sarandon
Susan Sarandonoriginal
2024-10-25 11:02:02565parcourir

Here are a few title options in a question format, catering to the content of your provided article:

**Direct &  Problem-Focused:**

* **How to Unmarshal a Map of Slices in Go When Keys are Dynamic?**
* **Empty Map After Unmarshaling: Why is my Go Struct

Démarshaling personnalisé de Struct dans une carte de tranches

Description du problème

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é.

Solution

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn