【问题标题】:mgo error when unmarshal map[string]interface{}解组 map[string]interface{} 时出现 mgo 错误
【发布时间】:2017-10-07 17:26:40
【问题描述】:

我想在结构中存储任意 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

我不知道它在反映什么。

【问题讨论】:

标签: json mongodb go struct mgo


【解决方案1】:

因此,当您解组输入参数时,需要一个指向结构的指针,并且您需要定义一个类型才能使用指向结构的指针。

type myMap map[string]interface{}

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

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

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

【讨论】:

猜你喜欢
  • 2015-01-14
  • 1970-01-01
  • 2011-05-22
  • 2016-08-06
  • 2018-08-05
  • 2021-05-26
  • 2021-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多