我正在查看bytes包。如果我使用bytes.Buffer定义一个缓冲区,那么下面的代码可以工作并输出结果。但是,如果我尝试创建一个具有一定容量的缓冲区,然后再尝试相同的代码,它会出现错误:error: invalid character '\x00' looking for beginning of value。不确定如何修复它。
package main
import (
"bytes"
"encoding/json"
"fmt"
)
func main() {
var jsonBlob = []byte(`[
{"Name": "Platypus", "Order": "Monotremata"},
{"Name": "Quoll", "Order": "Dasyuromorphia"}
]`)
//var b bytes.Buffer
b := *bytes.NewBuffer(make([]byte, 20))
b.Write(jsonBlob)
fmt.Println(b.String())
var dat interface{}
err := json.Unmarshal(b.Bytes(), &dat)
if err != nil {
fmt.Println("error:", err)
}
fmt.Printf("%+v", dat)
}
使用 bytes.Buffer 运行的输出
[
{"Name": "Platypus", "Order": "Monotremata"},
{"Name": "Quoll", "Order": "Dasyuromorphia"}
]
[map[Name:Platypus Order:Monotremata] map[Name:Quoll Order:Dasyuromorphia]]
Program exited.
使用bytes.NewBuffer运行的输出
[
{"Name": "Platypus", "Order": "Monotremata"},
{"Name": "Quoll", "Order": "Dasyuromorphia"}
]
error: invalid character '\x00' looking for beginning of value
<nil>