如何从map [string] interface {}编组XML?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从map [string] interface {}编组XML?相关的知识,希望对你有一定的参考价值。

我正在构建一个API来处理POST中的XML数据,并在响应中返回它。应该处理这个编组的函数是接收类型为map[string]interface{}的变量数据,如下所示(如果你将它记录到控制台):

map[lala:success blabla:0xc42011e700 status:true]

复制适用于JSON编组或尝试遵循文档的步骤让我陷入了死胡同。这是我到目前为止的代码:

type Map map[string]interface{}

type xmlMapEntry struct {
    XMLName xml.Name
    Value   string `xml:",chardata"`
}

func (m Map) MarshalXML(e *xml.Encoder, start xml.StartElement) error {

    for k, v := range m {
        e.Encode(xmlMapEntry{XMLName: xml.Name{Local: k}, Value: v})
    }

    return e.EncodeToken(start.End())
}

当e.Encode行返回时,我走到了尽头:cannot use v (type interface {}) as type string in field value: need type assertion

答案

解决了。回答:首先,我的结构VALUE是string类型而不是interaface,第二,看到数据解析我必须实际编组它...使用:x, _ := xml.MarshalIndent(Map(data), "", " ")

以上是关于如何从map [string] interface {}编组XML?的主要内容,如果未能解决你的问题,请参考以下文章

将 map[interface ]interface 转换为 map[string]string

gob:类型未注册接口:map[string]interface

在 Golang 中访问 map[string]interface 类型的嵌套映射

golang怎么把interface转化为map

golang怎么把map转化为interface

azure-maps-control StyleOptions interface is not style?: string its style?:vector