当前位置: 首页 > 面试题库 >

Marshall在Go中映射到XML

奚英朗
2023-03-14
问题内容

我正在尝试将地图输出为XML数据,但是收到以下错误:

xml: unsupported type: map[string]int

编组映射适用于JSON,因此我不明白为什么它不适用于XML。使用Struct真的是唯一的方法吗?


问题答案:

我最终按照DaveC的建议使用xml.Marshaler解决了这个问题

// 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()
}

资料来源:https :
//gist.github.com/jackspirou/4477e37d1f1c043806e0

现在,只需调用即可将地图编组

output, err := xml.MarshalIndent(data, "", "  ")


 类似资料:
  • 我希望我已经提供了所需的所有信息。在这个专家小组中,请大家在这个问题上帮助我。任何小小的帮助对我都是最大的帮助。提前感谢您的帮助。

  • 有没有使用包来完成此操作的简单方法? 谢谢任何建议/帮助!

  • 问题内容: 我正在尝试通过Mmap将数组映射到文件,该数组可以是任何类型,例如float64。在C,我觉得这是一个。阅读一些文本后,我编写了此样本。我不知道它是否正确,并且没有将值写入文件。如果我将数组的大小增加很多,例如从1000增加到10000,它将崩溃。如果有人知道如何正确地进行操作,请告诉我。 谢谢! 问题答案: 例如,修改示例程序,

  • 主要内容:map 概念,map 容量,用切片作为 map 的值Go语言中 map 是一种特殊的 数据结构,一种元素对(pair)的无序集合,pair 对应一个 key(索引)和一个 value(值),所以这个结构也称为关联数组或字典,这是一种能够快速寻找值的理想结构,给定 key,就可以迅速找到对应的 value。 map 这种数据结构在其他编程语言中也称为字典( Python)、hash 和 HashTable 等。 map 概念 map 是引用类型,可以

  • 目前我有一个DAO在做这样的事情: 而映射器则执行如下操作:(简化为该问题所需的内容) 作为JsonB字段存储在Aurora中。我读过一些关于注释的文章,但由于jdbi文档不清楚,所以我不确定这是否正确。 我映射结果的方式是“标准”方式吗?还是有更好/更有效的方式? 谢谢

  • 我正在构建一个REST API, 和ActiveBid类 和我的泽西请求映射器,它具有获取数据的逻辑 有人能帮我吗?我不知道和卡桑德拉共事会这么难。