# io 包扩展
# JSONReader
在某些情况下,我们经常需要将一个对象转化为 json 字符串,而后转化为一个 io.Reader。这是因为很多库的顶级依赖,都是 io.Reader 这个接口。
为了简化这个过程,我们提供了 JSONReader 这个结构体。下面是一个例子:
package iox_test
import (
"fmt"
"github.com/ecodeclub/ekit/iox"
"net/http"
)
func ExampleNewJSONReader() {
val := iox.NewJSONReader(User{Name: "Tom"})
_, err := http.NewRequest(http.MethodPost, "/hello", val)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println("OK")
}
type User struct {
Name string `json:"name"`
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
原本 http.NewRequest 中的第三个参数,是要求传入一个 io.Reader。而在上面的例子中,我们直接将 User 包装为一个 JSONReader,就省略了我们转 JSON,而后再次封装为 io.Reader 的麻烦。
← 重试策略