ホームページ > バックエンド開発 > Golang > Go マップを XML に変換する方法: カスタム マーシャラー アプローチ

Go マップを XML に変換する方法: カスタム マーシャラー アプローチ

Susan Sarandon
リリース: 2024-10-31 08:47:30
オリジナル
222 人が閲覧しました

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

Marshall Go マップから XML へ

Go マップを JSON に変換するのは簡単です。ただし、XML に対して同じ操作を実行しようとすると、次のエラーが発生する可能性があります。

xml: unsupported type: map[string]int

解決策: カスタム XML マーシャラーの使用

JSON とは異なり、XML マーシャリングは本質的にマップをサポートしません。この制限を回避するには、マップ タイプにカスタム xml.Marshaler を実装できます。

<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>
ログイン後にコピー

これで、xml.MarshalIndent(...) を呼び出すだけでマップを XML にマーシャリングできます。

<code class="go">output, err := xml.MarshalIndent(data, "", "  ")</code>
ログイン後にコピー

以上がGo マップを XML に変換する方法: カスタム マーシャラー アプローチの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート