Golang中的JSON编解码有以下几个特点:
- 简单易用:通过encoding/json包提供的Marshal和Unmarshal方法可以简单实现JSON编解码。
- 高性能:编解码性能非常高,可以轻易处理大量数据。
- 灵活:支持结构体、map以及slice等数据类型与JSON转换。
- 标签支持:通过结构体标签可以 flexibly 定制JSON的编解码规则。
- 零拷贝:支持直接编解码[]byte,减少内存分配和数据拷贝。
代码示例:
JSON编码:
go
type User struct {
Name string
Age int
}
user := User{"John", 30}
data, err := json.Marshal(user)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", data)
// {"Name":"John","Age":30}
JSON解码:
go
var user User
err := json.Unmarshal(data, &user)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%#v\n", user)
// main.User{Name:"John", Age:30}
通过json.Marshal和json.Unmarshal可以轻松实现数据与JSON的互相转换。
结构体标签:
go
type User struct {
Name string `json:"name"`
}
// JSON编码后
// {"name":"John"}
使用json:"name"
结构体标签可以定制JSON的字段名称。