我正在尝试将地图输出为
XML数据,但是我收到以下错误:
xml: unsupported type: map[string]int
编组映射适用于JSON,因此我不明白为什么它对XML不起作用.使用Struct真的是唯一的方法吗?
我最终通过使用
Dave C建议的xml.Marshaler来解决这个问题
原文链接:https://www.f2er.com/xml/292254.html// 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 err := e.Flush() if err != nil { return err } return nil }
资料来源:https://gist.github.com/jackspirou/4477e37d1f1c043806e0
现在可以通过简单地调用来编组地图
output,err := xml.MarshalIndent(data,""," ")