Rumah >pembangunan bahagian belakang >Golang >Cara Menukar Peta Go kepada XML: Pendekatan Marshaler Tersuai
Peta Marshall Go kepada XML
Menukar peta Go kepada JSON adalah mudah. Walau bagaimanapun, percubaan untuk melakukan operasi yang sama untuk XML boleh membawa kepada ralat:
xml: unsupported type: map[string]int
Penyelesaian: Menggunakan XML Marshaler Tersuai
Tidak seperti JSON, XML marshalling sememangnya tidak menyokong peta. Untuk mengatasi had ini, xml.Marshaler tersuai boleh dilaksanakan untuk jenis peta anda:
<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>
Kini, anda boleh panggil xml.MarshalIndent(...) untuk menyusun peta menjadi XML:
<code class="go">output, err := xml.MarshalIndent(data, "", " ")</code>
Atas ialah kandungan terperinci Cara Menukar Peta Go kepada XML: Pendekatan Marshaler Tersuai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!