ホームページ > バックエンド開発 > Golang > Go でマップを XML にマーシャリングする方法: 「xml: unsupported type: map[string]int」エラーが発生した場合の対処方法

Go でマップを XML にマーシャリングする方法: 「xml: unsupported type: map[string]int」エラーが発生した場合の対処方法

Mary-Kate Olsen
リリース: 2024-11-03 11:17:02
オリジナル
550 人が閲覧しました

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

Go でマップを XML にマーシャリングする

マップを XML データに変換しようとすると、開発者は「xml: unsupported type:map[string]」というエラーが発生する場合があります。 INT。」 JSON ではマップのマーシャリングが可能ですが、XML ではデフォルトでサポートされていません。

この問題に対する 1 つの解決策は、xml.Marshaler インターフェイスを利用することです。カスタム StringMap タイプを作成し、MarshalXML を実装することで、マップを XML にシリアル化する方法を制御できます。これにより、必要な構造と要素名を指定できます。

StringMap の MarshalXML の実装例を次に示します。

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

MarshalXML を実装したら、単純に xml.MarshalIndent を呼び出すことができます。データに基づいて必要な XML 出力を生成します。

以上がGo でマップを XML にマーシャリングする方法: 「xml: unsupported type: map[string]int」エラーが発生した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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