Cara Peta Marshal ke XML dalam Go: Apa yang Perlu Dilakukan Apabila Anda Mendapat Ralat \'xml: unsupported type: map[string]int\'?

Mary-Kate Olsen
Lepaskan: 2024-11-03 11:17:02
asal
388 orang telah melayarinya

How to Marshal Maps to XML in Go: What to Do When You Get the

Marshalling Maps to XML in Go

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!