首页 文章

unmarshal map [string] interface {}时出现mgo错误

提问于
浏览
0

我想在结构中存储一个任意的json对象:

type C struct {
  Name string `json:"name" bson:"name"`
  Config map[string]interface{} `json:"config" bson:"config"`
}

这在我存储任何深度嵌套的json对象时工作正常,但是当我去检索它并且mgo尝试解组它时,我得到了

Unmarshal无法处理struct值 . 使用指针 .

我不确定应该是什么指针 . 如果我改成它

Config *map[string]interface{}

发生同样的错误 .

错误发生在这里:https://github.com/MG-RAST/golib/blob/master/mgo/bson/bson.go#L493

我不知道它反映的是什么 .

1 回答

  • 0

    因此,当您解组时,输入参数将获取指向结构的指针,并且您需要定义一个类型以便使用指向结构的指针 .

    type myMap map[string]interface{}
    

    然后你可以创建一个指向该类型的指针,注意&符号以指示你的结构类型myMap的指针,使用json你可以这样做:

    json := []Byte{`{"name": "value"}`}
    c := &myMap{"value": "name"}
    json.Unmarshal(c, json)
    

    所以你需要* myMap到struct而不是指向类型的指针 . 为了解释这个问题的具体解决方案,你需要添加mongodb如何解组你的json的上下文 .

相关问题