导航

sonic反序列化至maps

发布时间:6 months ago 更新时间:4 months ago
开发

通过 sonic 可以将任意 byte 数据反序列化为一个任意复合类型,maps、struct 都可以。但是 struct 类型需定义结构体字段标签(tag)

go 1.23.0 后的版本前我们一般使用 interface{} 来表示一个空类型,在该版本后我们使用 any 来表示任意类型。

sonic 能够反序列化至 any 表示的成员中,但是当我们在使用时,需要通过ok test 去对该成员进行一个断言。

main.go
package main import ( "fmt" "log" "github.com/bytedance/sonic" ) type demoS struct { Digit int `json:"digit"` Str string `json:"str"` } func main() { var params map[string]any json := demoS{ Str: "Hello world", } data, err := sonic.Marshal(json) if err != nil { log.Fatalln(err) } err = sonic.Unmarshal(data, &params) if err != nil { log.Fatalln(err) } for _, v := range params { fmt.Println(v) } }