"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go에서 맵을 XML로 마샬링하는 방법: \"xml: unsupported type: map[string]int\" 오류가 발생하면 어떻게 해야 합니까?

Go에서 맵을 XML로 마샬링하는 방법: \"xml: unsupported type: map[string]int\" 오류가 발생하면 어떻게 해야 합니까?

2024-11-08에 게시됨
검색:538

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

Go에서 지도를 XML로 마샬링

지도를 XML 데이터로 변환하려고 하면 개발자에게 'xml: 지원되지 않는 유형: map[string]이라는 오류가 발생할 수 있습니다. 정수." JSON에서는 맵 마샬링이 가능하지만 기본적으로 XML에서는 지원되지 않습니다.

이 문제에 대한 한 가지 해결책은 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