package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"` // 标记该字段在 JSON 中的字段名为 "name"
Age int `json:"age"` // 标记该字段在 JSON 中的字段名为 "age"
Address string `json:"address,omitempty"`// 标记该字段在 JSON 中的字段名为 "address",如果该字段为零值则忽略该字段
}
func main() {
// 创建一个 Person 实例
person := Person{"Bob", 28, ""}
// 序列化成 JSON 字符串
bytes, err := json.Marshal(person)
if err != nil {
fmt.Println("Marshal failed:", err)
return
}
str := string(bytes)
fmt.Println("Marshal to JSON:", str)
// 反序列化 JSON 字符串
var person2 Person
err = json.Unmarshal([]byte(str), &person2)
if err != nil {
fmt.Println("Unmarshal failed:", err)
return
}
fmt.Println("Unmarshal from JSON:", person2)
}
输出结果:
Marshal to JSON: {"name":"Bob","age":28}
Unmarshal from JSON: {Bob 28 }