比GO自带的encoding/json性能要高
引入依赖
go get github.com/bytedance/sonic使用
package main
import (
"fmt"
"reflect"
"github.com/bytedance/sonic"
)
type TestJson struct {
AA int `json:"aa"`
BB int `json:"bb"`
}
func main() {
var j TestJson
//序列化
sonic.UnmarshalString(`{"aa":1, "bb":2}`, &j)
sonic.Unmarshal([]byte(`{"aa":1, "bb":2}`), &j)
//反序列化
fmt.Println(sonic.MarshalString(j)) // {"aa":1,"bb":2} <nil>
fmt.Println(sonic.Marshal(j)) //[123 34 97 97 34 58 49 44 34 98 98 34 58 50 125] <nil>
fmt.Println(sonic.ValidString(`{"aa":1, "bb":2}`)) //检查JSON字符串是否合法,是否可以被序列化,返回bool
fmt.Println(sonic.Pretouch(reflect.TypeOf(&j))) //将大对象传入Pretouch进行预接触(预热),优化后续序列化或反序列化的延迟
}
官方测试
小对象:

大对象:
