如何传递(键入* common.MapStr)来键入[] byte?

时间:2016-10-28 08:11:37

标签: go

对不起,如果问题太新手了,因为我刚开始学习昨天去。 我尝试将publishEvent转换为字节,并且编译器显示如下错误:

    var parsed map[string]interface{}
    bytes := []byte(publishEvent) --->Error occur here
    err := json.Unmarshal(bytes, &parsed)
    if err != nil{
        fmt.Println("error: ", err)
    }

有人能告诉我这个方法吗?

谢谢。

exit;

1 个答案:

答案 0 :(得分:0)

我认为您使用的结构是来自https://github.com/elastic/libbeat

common.MapStr

common.MapStr已经是map[string]interface{}所以我不确定你为什么要把它变成JSON,然后把它解析成同样的结构,但如果这就是你真正想要的do,用以下代码替换错误行:

bytes, err := json.Marshal(publishEvent)

应该有效。您将在下一行重新声明err时收到错误,因此请将其更改为:

err = json.Unmarshal(bytes, &parsed)

导致以下代码(还添加了另一个错误检查):

var parsed map[string]interface{}
bytes, err := json.Marshal(publishEvent)
if err != nil{
    fmt.Println("error: ", err)
    // you'll want to exit or return here since we can't parse `bytes`
}
err = json.Unmarshal(bytes, &parsed)
if err != nil{
    fmt.Println("error: ", err)
}