Marshall在Go中映射到XML
发布时间:2020-12-16 07:43:00 所属栏目:百科 来源:网络整理
导读:我正在尝试将地图输出为 XML数据,但是我收到以下错误: xml: unsupported type: map[string]int 编组映射适用于JSON,因此我不明白为什么它对XML不起作用.使用Struct真的是唯一的方法吗? 我最终通过使用 Dave C建议的xml.Marshaler来解决这个问题 // StringM
我正在尝试将地图输出为
XML数据,但是我收到以下错误:
xml: unsupported type: map[string]int 编组映射适用于JSON,因此我不明白为什么它对XML不起作用.使用Struct真的是唯一的方法吗?
我最终通过使用
Dave C建议的xml.Marshaler来解决这个问题
// 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,""," ") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |