Maison > développement back-end > Golang > Comment marshaler des cartes vers XML dans Go : que faire lorsque vous obtenez l'erreur \'xml : type non pris en charge : map[string]int\' ?

Comment marshaler des cartes vers XML dans Go : que faire lorsque vous obtenez l'erreur \'xml : type non pris en charge : map[string]int\' ?

Mary-Kate Olsen
Libérer: 2024-11-03 11:17:02
original
590 Les gens l'ont consulté

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

Marshalling de cartes en XML dans Go

Lors de la tentative de conversion d'une carte en données XML, les développeurs peuvent rencontrer une erreur indiquant "xml : type non pris en charge : map[string] int." Même si le marshalling de cartes est possible pour JSON, il n'est pas pris en charge par défaut pour XML.

Une solution à ce problème consiste à utiliser l'interface xml.Marshaler. En créant un type StringMap personnalisé et en implémentant MarshalXML, vous pouvez contrôler la manière dont la carte est sérialisée en XML. Cela vous permet de spécifier la structure souhaitée et les noms d'éléments.

Voici un exemple d'implémentation de MarshalXML pour un 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>
Copier après la connexion

Une fois que vous avez implémenté MarshalXML, vous pouvez simplement appeler xml.MarshalIndent sur vos données pour générer la sortie XML souhaitée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal