Maison > développement back-end > Golang > Comment marshaler des cartes vers XML dans Go : au-delà des structures avec `xml.Marshaler`

Comment marshaler des cartes vers XML dans Go : au-delà des structures avec `xml.Marshaler`

Mary-Kate Olsen
Libérer: 2024-10-30 13:21:03
original
952 Les gens l'ont consulté

How to Marshal Maps to XML in Go: Beyond Structs with `xml.Marshaler`

Marshall mappe vers XML dans Go : au-delà des structures avec xml.Marshaler

Rencontre avec l'erreur "xml : type non pris en charge : map[string] int" lors d'une tentative de marshalage d'une carte vers des données XML n'est pas rare. Bien que les cartes soient bien marshalées en JSON, comprendre leur comportement avec XML nécessite une analyse plus approfondie.

La principale différence réside dans la nature même de XML. Contrairement à JSON, qui traite les données comme une hiérarchie imbriquée de paires clé-valeur, XML structure les données comme une hiérarchie d'éléments et d'attributs. Cette distinction interdit la conversion directe des cartes.

Pour surmonter ce défi, une implémentation personnalisée est nécessaire. Ici, nous utilisons l'interface xml.Marshaler, qui permet une logique de marshaling sur mesure. En implémentant MarshalXML, nous définissons la manière spécifique dont la carte doit être sérialisée.

Par exemple, nous pouvons créer un type personnalisé appelé StringMap qui intègre la structure de données map[string]string. Dans MarshalXML, nous construisons des jetons XML, comprenant des éléments de début et de fin, pour représenter la carte. Pour chaque paire clé-valeur, nous générons des éléments de début et de fin avec la clé comme nom d'élément et la valeur comme données de caractères.

En implémentant cette méthode MarshalXML, StringMap acquiert la capacité de se marshaler au format XML. Désormais, le regroupement des cartes devient simple, impliquant uniquement un appel à xml.MarshalIndent. Cette approche personnalisée fournit une solution viable au-delà du recours uniquement aux structures pour le marshaling XML.

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