mirror of
https://github.com/gin-gonic/gin.git
synced 2025-10-14 12:12:12 +08:00
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package bufio
|
||
|
||
import (
|
||
"encoding/json"
|
||
"io"
|
||
"strings"
|
||
"testing"
|
||
)
|
||
|
||
/**
|
||
为什么BindJSON不能调用第二次,对应的测试用例Uri: /bingJson1
|
||
*/
|
||
|
||
func TestJSonDeCode(t *testing.T) {
|
||
// 示例JSON字符串
|
||
jsonStr := `{"name":"张三","age":30}`
|
||
// 将字符串转换为io.Reader
|
||
ioR := strings.NewReader(jsonStr)
|
||
newDecoder := json.NewDecoder(ioR)
|
||
obj := new(map[string]interface{})
|
||
if err := newDecoder.Decode(obj); err != nil {
|
||
t.Error(err)
|
||
} else {
|
||
t.Log(obj)
|
||
//第二次的调用Decode方法,Json内部使用的是dec.readValue(),碰到具体的
|
||
if err = newDecoder.Decode(obj); err != nil {
|
||
t.Error(err) //json_read_test.go:22: EOF 读到了文件的末尾
|
||
} else {
|
||
t.Log(obj)
|
||
}
|
||
}
|
||
}
|
||
|
||
func TestIoReadAll(t *testing.T) {
|
||
// 示例JSON字符串
|
||
jsonStr := `{"name":"张三","age":30}`
|
||
// 将字符串转换为io.Reader
|
||
ioR := strings.NewReader(jsonStr)
|
||
//这里可以对比一下 io.ReadAll 和 readValue
|
||
body, err := io.ReadAll(ioR)
|
||
if err != nil {
|
||
t.Error(err)
|
||
} else {
|
||
t.Log(string(body))
|
||
body, err = io.ReadAll(ioR)
|
||
if err != nil {
|
||
t.Error(err)
|
||
} else {
|
||
t.Log(string(body))
|
||
}
|
||
}
|
||
}
|