您如何将json解组到包含uint8的结构中?我收到错误消息json: cannot unmarshal object into Go struct field A.test of type uint8
在我的结构中

type A struct {
    Test  uint8  `json:"test omitempty" bson:"test"`
}

我将struct A插入mongo,然后成功完成mongo查找并打印出与struct A相对应的集合。我可以执行bson.MarshalExtJSON将bson转换为json,然后当我执行json.Unmarshal将json转换为我失败的结构A时。

这是一个重现问题的样本golang游乐场。我不明白为什么会失败?我如何解决它?

https://play.golang.org/p/0HOAxsu166j

我看到unmarshal使用“float64,表示JSON数字”,但是我不能使用float64而不是uint8来工作

最佳答案

感谢@Brits的评论,我发现当我调用bson.MarshalExtJSON时得到了extendedJson。 json.Unmarshal()无法读取{"$numberInt":"52"}这样的extendedJson,因此这就是失败的原因。

所以要解决这个问题,我使用的是bson.UnmarshalExtJSON()而不是json.Unmarshal(),以便能够将extendedJSON编组到结构中

关于json - 如何使用uint8解码json以构建结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59959492/

10-11 12:29