我是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)
}
获取错误:
不能“将对象解组为类型[] uint8”的Go值。
我该如何解决这个问题?
答案 0 :(得分:5)
您有2个JSON输入,并且您正在尝试将其中一个解组到另一个中。这没有任何意义。
使用类型(struct)为您的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]}
答案 1 :(得分:2)
我认为你打算做这样的事情:
package main
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对象解组为另一个。