我尝试将地图输出为 XML 数据,但收到以下错误:
xml: unsupported type: map[string]int
编组映射对于 JSON 工作得很好,所以我不明白为什么它对于 XML 不能同样工作。使用 Struct 真的是唯一的方法吗?
我最终按照建议使用 xml.Marshaler 解决了这个问题Dave C
// 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()
}
Source: https://gist.github.com/jackspirou/4477e37d1f1c043806e0
现在只需调用即可整理地图
output, err := xml.MarshalIndent(data, "", " ")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)