首頁 > 後端開發 > Golang > 如何將 Go 映射轉換為 XML:自訂封送拆收器方法

如何將 Go 映射轉換為 XML:自訂封送拆收器方法

Susan Sarandon
發布: 2024-10-31 08:47:30
原創
220 人瀏覽過

How to Convert Go Maps to XML: A Custom Marshaler Approach

Marshall Go 對應到 XML

將 Go 映射轉換為 JSON 非常簡單。但是,嘗試對XML 執行相同的操作可能會導致錯誤:

xml: unsupported type: map[string]int

解決方案:使用自訂XML 封送拆收器

與JSON 不同,XML 編組本身並不支援映射。要解決此限制,可以為您的地圖類型實作自訂xml.Marshaler:

<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>
登入後複製

現在,您只需呼叫xml.MarshalIndent(...) 將地圖編組為XML:

<code class="go">output, err := xml.MarshalIndent(data, "", "  ")</code>
登入後複製

以上是如何將 Go 映射轉換為 XML:自訂封送拆收器方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板