Peta Marshall kepada XML dalam Go
Apabila cuba menukar peta kepada data XML, ralat mungkin dihadapi:
xml: unsupported type: map[string]int
Walaupun mudah untuk memetakan marshal ke JSON, menggunakan struct mungkin bukan satu-satunya pilihan.
Untuk menyelesaikan isu ini, antara muka xml.Marshaler boleh digunakan:
<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>
Dengan melaksanakan kaedah MarshalXML untuk jenis StringMap tersuai, peta boleh dimarshall sebagai XML.
Untuk menggunakan XML termarshal:
<code class="go">output, err := xml.MarshalIndent(data, "", " ")</code>
Atas ialah kandungan terperinci Bagaimana untuk Menukar Peta Go kepada Data XML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!