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!