マップを XML データに変換しようとすると、開発者は「xml: サポートされていないタイプ: マップ[文字列]」というエラーが発生する場合があります。 INT。」 JSON ではマップのマーシャリングが可能ですが、デフォルトでは XML ではサポートされていません。
この問題に対する 1 つの解決策は、xml.Marshaler インターフェイスを利用することです。カスタム StringMap タイプを作成し、MarshalXML を実装することで、マップを XML にシリアル化する方法を制御できます。これにより、必要な構造名と要素名を指定できます。
StringMap の MarshalXML の実装例を次に示します。
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()
}
MarshalXML を実装したら、データに対して xml.MarshalIndent を呼び出すだけで、目的の XML 出力を生成できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3