Administrator
Administrator
发布于 2025-09-05 / 10 阅读
0
0

高性能JSON库sonic

比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进行预接触(预热),优化后续序列化或反序列化的延迟
}

官方测试

小对象:

大对象:


评论