如何从map [string] interface {}封送XML?

时间:2019-01-15 15:15:04

标签: go

我正在构建一个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

1 个答案:

答案 0 :(得分:1)

已解决。回答: 首先,我的结构VALUE是string类型,而不是interaface类型,其次,要查看数据解析,我实际上必须将其编组..使用:  x, _ := xml.MarshalIndent(Map(data), "", " ")