我有两个结构。一个从另一个继承。

type Animal struct {
    Name string `json:"name"`
}

type Dog struct {
    Animal
    Color string `json:"color"`
}

当我通过传入去UnmarshalDog时:
{
  "name": "Loki",
  "color": "Brown"
}

我正在获取*encoding/json.InvalidUnmarshalError2019/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

10-06 13:16
查看更多