編碼
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))
}