Go 中的Marshall 對應到XML
嘗試將映射轉換為XML 資料時,可能會遇到錯誤:
xml: unsupported type: map[string]int
雖然將映射編組為JSON 很簡單,但使用結構可能不是唯一的選擇。
要解決此問題,可以使用 xml.Marshaler 介面:
<code class="go">// Marshal maps 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>
透過為自訂 StringMap 類型實作 MarshalXML 方法,可以將映射編組為 XML。
要使用編組的 XML:
<code class="go">output, err := xml.MarshalIndent(data, "", " ")</code>
以上是如何將 Go Map 轉換為 XML 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!