Maison > Article > développement back-end > Comment convertir Go Maps en XML : une approche de marshaleur personnalisée
Marshall Go Maps en XML
La conversion des cartes Go en JSON est simple. Cependant, tenter d'effectuer la même opération pour XML peut entraîner une erreur :
xml : type non pris en charge : map[string]int
Solution : Utilisation d'un marshaler XML personnalisé
Contrairement à JSON, le marshalling XML ne prend pas automatiquement en charge les cartes. Pour contourner cette limitation, un xml.Marshaler personnalisé peut être implémenté pour votre type de carte :
<code class="go">// StringMap is a map[string]string. type StringMap map[string]string // StringMap marshals into XML. 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>
Maintenant, vous pouvez simplement appeler xml.MarshalIndent(...) pour marshaler la carte en XML :
<code class="go">output, err := xml.MarshalIndent(data, "", " ")</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!