Apabila cuba menukar peta kepada data XML, pembangun mungkin menghadapi ralat menyatakan "xml: unsupported type: map[string] int." Walaupun peta marshalling mungkin untuk JSON, ia tidak disokong untuk XML secara lalai.
Satu penyelesaian untuk isu ini ialah menggunakan antara muka xml.Marshaler. Dengan mencipta jenis StringMap tersuai dan melaksanakan MarshalXML, anda boleh mengawal cara peta disirikan ke dalam XML. Ini membolehkan anda menentukan struktur dan nama elemen yang dikehendaki.
Berikut ialah contoh pelaksanaan MarshalXML untuk StringMap:
<code class="golang">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>
Setelah anda melaksanakan MarshalXML, anda boleh memanggil xml.MarshalIndent pada data anda untuk menjana output XML yang diingini.
Atas ialah kandungan terperinci Cara Peta Marshal ke XML dalam Go: Apa yang Perlu Dilakukan Apabila Anda Mendapat Ralat \'xml: unsupported type: map[string]int\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!