【发布时间】:2017-03-08 01:08:30
【问题描述】:
我在看字节包。如果我使用 bytes.Buffer 定义一个缓冲区,那么下面的代码可以工作并且我得到一个输出。但是,如果我尝试创建一个具有一定容量的缓冲区,然后尝试相同的代码,它会失败并出现错误错误: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>
【问题讨论】:
标签: go