编码
json
- json是go标准库里自带的序列化工具,使用了反射,效率比较低
- easyjson值针对预先定义好的json结构体对输入的json字符串进行纯字符串的截取,并将对应的json字段赋值给结构体
- easyjson -all xxx.go 生成go文件中定义的结构体对应的解析xxx.go所在的package不能是main
func easyjson.Marshal(v easyjson.Marshaler)([]byte, error)
func easyjson.Unmarshal(data []byte, v easyjson.Unmarshaler) error
- sonic是字节跳动开源的json序列化工具包,号称性能强过easyjson、jsoniter,使用起来非常方便。
package main
import (
"encoding/json"
"fmt"
"github.com/bytedance/sonic"
)
type Student struct {
Name string
Age int
}
func main() {
stu := Student{"zcy", 18}
bs, _ := json.Marshal(stu)
fmt.Println(string(bs))
bs, _ = sonic.Marshal(stu)
fmt.Println(string(bs))
}
base64
- 任意byte数组都可以采用base64编码转为字符串,并且可以反解回byte数组
- 编码和解码的方法是公开、确定的,base64不属于加密算法
- base64经常在http环境下用来传输较长的信息
package main
import (
"encoding/json"
"fmt"
"github.com/bytedance/sonic"
)
type Student struct {
Name string
Age int
}
func main() {
stu := Student{"zcy", 18}
bs, _ := json.Marshal(stu)
fmt.Println(string(bs))
bs, _ = sonic.Marshal(stu)
fmt.Println(string(bs))
}
没有回复内容