>  기사  >  백엔드 개발  >  Go 맵을 XML로 변환하는 방법: 사용자 정의 마샬러 접근 방식

Go 맵을 XML로 변환하는 방법: 사용자 정의 마샬러 접근 방식

Susan Sarandon
Susan Sarandon원래의
2024-10-31 08:47:30139검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.