Maison > Article > développement back-end > Comment marshaler des cartes vers XML dans Go : que faire lorsque vous obtenez l'erreur \"xml : type non pris en charge : map[string]int\" ?
Lors de la tentative de conversion d'une carte en données XML, les développeurs peuvent rencontrer une erreur indiquant "xml : type non pris en charge : map[string] int." Même si le marshalling de cartes est possible pour JSON, il n'est pas pris en charge par défaut pour XML.
Une solution à ce problème consiste à utiliser l'interface xml.Marshaler. En créant un type StringMap personnalisé et en implémentant MarshalXML, vous pouvez contrôler la manière dont la carte est sérialisée en XML. Cela vous permet de spécifier la structure souhaitée et les noms d'éléments.
Voici un exemple d'implémentation de MarshalXML pour un StringMap :
<code class="golang">func (s StringMap) MarshalXML(e *xml.Encoder, start xml.StartElement) error { tokens := []xml.Token{start} for key, value := range s { t := xml.StartElement{Name: xml.Name{"", key}} tokens = append(tokens, t, xml.CharData(value), xml.EndElement{t.Name}) } tokens = append(tokens, xml.EndElement{start.Name}) for _, t := range tokens { err := e.EncodeToken(t) if err != nil { return err } } // flush to ensure tokens are written return e.Flush() }</code>
Une fois que vous avez implémenté MarshalXML, vous pouvez simplement appeler xml.MarshalIndent sur vos données pour générer la sortie XML souhaitée.
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!