ホームページ  >  記事  >  バックエンド開発  >  Go でマップを XML にマーシャリングする方法: `xml.Marshaler` を使用して構造体を超えて

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-30 13:21:03883ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。