Go で Marshall マップを XML に変換する
マップを XML データに変換しようとすると、エラーが発生する可能性があります:
xml: unsupported type: map[string]int
マップを JSON にマーシャリングするのは簡単ですが、構造体の使用が唯一の選択肢ではない可能性があります。
この問題を解決するには、xml.Marshaler インターフェイスを利用できます。
<code class="go">// Marshal maps 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>
カスタム StringMap タイプの MarshalXML メソッドを実装することにより、マップを XML としてマーシャリングできます。
マーシャリングされた XML を使用するには:
<code class="go">output, err := xml.MarshalIndent(data, "", " ")</code>
以上がGo マップを XML データに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。