Heim > Backend-Entwicklung > Golang > So konvertieren Sie Go Maps in XML: Ein benutzerdefinierter Marshaler-Ansatz

So konvertieren Sie Go Maps in XML: Ein benutzerdefinierter Marshaler-Ansatz

Susan Sarandon
Freigeben: 2024-10-31 08:47:30
Original
242 Leute haben es durchsucht

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

Marshall Go Maps in XML

Die Konvertierung von Go Maps in JSON ist unkompliziert. Der Versuch, denselben Vorgang für XML auszuführen, kann jedoch zu einem Fehler führen:

xml: nicht unterstützter Typ: map[string]int

Lösung: Verwendung eines benutzerdefinierten XML-Marshalers

Im Gegensatz zu JSON unterstützt XML-Marshalling Karten grundsätzlich nicht. Um diese Einschränkung zu umgehen, kann ein benutzerdefinierter xml.Marshaler für Ihren Kartentyp implementiert werden:

<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>
Nach dem Login kopieren

Jetzt können Sie einfach xml.MarshalIndent(...) aufrufen, um die Karte in XML zu Marshallen:

<code class="go">output, err := xml.MarshalIndent(data, "", "  ")</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie Go Maps in XML: Ein benutzerdefinierter Marshaler-Ansatz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage