我有两个结构。一个从另一个继承。
type Animal struct {
Name string `json:"name"`
}
type Dog struct {
Animal
Color string `json:"color"`
}
当我通过传入去
Unmarshal
到Dog
时:{
"name": "Loki",
"color": "Brown"
}
我正在获取
*encoding/json.InvalidUnmarshalError
。 2019/03/10 00:22:35 json: Unmarshal(nil *main.Dog)
这是为什么?
这是解码代码:
func main() {
var dog *Dog
err := json.Unmarshal([]byte(`{
"name": "Loki",
"color": "Brown"
}`), dog)
if err != nil {
log.Fatal(err)
}
}
最佳答案
这是因为变量dog
为nil。尝试将其初始化为指向空的Dog
。或者将其设置为Dog
而不是Dog
的指针,然后将地址传递给Unmarshal
。