繁体   English   中英

解组map [string] interface {}时发生mgo错误

[英]mgo error when unmarshal map[string]interface{}

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

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

当我存储任何深度嵌套的json对象时,此方法工作正常,但是当我检索它并mgo尝试将其解组时,我得到

Unmarshal无法处理结构值。 使用指针。

我不确定应该是什么指针。 如果我将其更改为

Config *map[string]interface{}

发生相同的错误。

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

我不知道它在反映什么。

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

type myMap map[string]interface{}

然后,您可以使指向该类型的指针注意与号,以指示指向myMap类型的结构的指针,使用json可以执行以下操作:

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

因此,您需要* myMap到结构而不是类型的指针。 为了解释此问题的具体解决方案,您需要添加mongodb如何解组json的上下文。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM