2 回答
TA贡献1869条经验 获得超4个赞
使用iotest.NewReadLogger在读取数据时记录数据:
prefix := fmt.Sprintf("%p:", conn)
reader := bufio.NewReader(iotest.NewReadLogger(prefix, conn))
dec := json.NewDecoder(reader)
for {
var dst customStruct
if err = dec.Decode(&dst); err == io.EOF {
break
} else if err != nil {
log.Errorf("failed to decode message: %s", err)
break
}
// do something with dst...
}
如果读取的记录器输出不符合您的口味,则复制实现并根据需要进行调整。实现非常简单。
TA贡献1817条经验 获得超14个赞
您可以使用ioutil.ReadAll()然后从字节中打印和解码。但是由于您在不使用缓冲区的情况下读取所有字节,因此理想情况下应该将其放在debug标志检查之后。
bs,err := ioutil.ReadAll()
if err != nil {
panic(err)
}
log.Printf("output: %s", string(bs))
var dst customStruct
if err := json.Unmarshal(bs, &dst); err != nil {
panic(err)
}
- 2 回答
- 0 关注
- 120 浏览
添加回答
举报