Go でマップを XML にマーシャリングする方法: `xml.Marshaler` を使用して構造体を超えて

Mary-Kate Olsen
リリース: 2024-10-30 13:21:03
オリジナル
896 人が閲覧しました

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

Go で Marshall が XML にマップする: xml.Marshaler による構造体を超えて

エラー「xml: unsupported type: map[string]」が発生するint" を使用してマップを XML データにマーシャリングしようとすることは珍しいことではありません。マップは JSON に適切にマーシャリングされますが、XML での動作を理解するには、より深く理解する必要があります。

主な違いは、XML 自体の性質にあります。データをキーと値のペアのネストされた階層として扱う JSON とは異なり、XML はデータを要素と属性の階層として構造化します。この区別により、マップの直接変換が禁止されます。

この課題を克服するには、カスタム実装が必要です。ここでは、カスタマイズされたマーシャリング ロジックを可能にする xml.Marshaler インターフェイスを使用します。 MarshalXML を実装することで、マップをシリアル化する具体的な方法を定義します。

たとえば、map[string]string データ構造を埋め込む StringMap というカスタム タイプを作成できます。 MarshalXML 内で、マップを表す開始要素と終了要素を含む XML トークンを構築します。キーと値のペアごとに、要素名としてキー、文字データとして値を持つ開始要素と終了要素を生成します。

この MarshalXML メソッドを実装することにより、StringMap はそれ自体を XML 形式にマーシャリングする機能を獲得します。これで、マップのマーシャリングが簡単になり、xml.MarshalIndent を呼び出すだけになります。このカスタム アプローチは、XML マーシャリングの構造体のみに依存する以上の実行可能なソリューションを提供します。

以上がGo でマップを XML にマーシャリングする方法: `xml.Marshaler` を使用して構造体を超えての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!