Golang中的JSON编解码有何特点?代码举例讲解

Golang中的JSON编解码有以下几个特点:

  1. 简单易用:通过encoding/json包提供的Marshal和Unmarshal方法可以简单实现JSON编解码。
  2. 高性能:编解码性能非常高,可以轻易处理大量数据。
  3. 灵活:支持结构体、map以及slice等数据类型与JSON转换。
  4. 标签支持:通过结构体标签可以 flexibly 定制JSON的编解码规则。
  5. 零拷贝:支持直接编解码[]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的字段名称。