无法将对象解组为 []uint8 类型的 Go 值

Cannot unmarshal object into Go value of type []uint8

我是 Go 的新手。我有以下代码:

package main

import (
    "encoding/json"
    "fmt"
)
func main() {

    byt := []byte(`{"num":6.13,"strs":["a","b"]}`)
    dat := []byte(`{"num":7.13,"strs":["c","d"]}`)
    if err := json.Unmarshal(byt, &dat); err != nil {
        panic(err)
    }
    fmt.Println(dat)

}

获取错误:

cannot "unmarshal object into Go value of type []uint8".

请问我该如何解决这个问题?

您有 2 个 JSON 输入,并且您正在尝试将其中一个解组为另一个。这没有任何意义。

使用类型(结构)为您的 JSON 输入(对象)建模,然后将其解组。例如:

type Obj struct {
    Num  float64  `json:"num"`
    Strs []string `json:"strs"`
}

func main() {
    byt := []byte(`{"num":6.13,"strs":["a","b"]}`)

    var obj Obj
    if err := json.Unmarshal(byt, &obj); err != nil {
        panic(err)
    }
    fmt.Println(obj)

}

输出(在 Go Playground 上尝试):

{6.13 [a b]}

我想你是想做这样的事情:

主要包

import (
    "encoding/json"
    "fmt"
)

func main() {
    var dat interface{}
    byt := []byte(`{"num":6.13,"strs":["a","b"]}`)
    if err := json.Unmarshal(byt, &dat); err != nil {
        panic(err)
    }
    fmt.Println(dat)
}

您试图做的事情毫无意义,因为您正试图将两个 JSON 对象解组为另一个对象。