Go的json序列化:Marshal与Unmarshal
package main
import (
"encoding/json"
"fmt"
"log"
)
// 定义一个结构体
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Address string `json:"address,omitempty"` // omitempty: 如果字段为空,则不包含到JSON中
}
func main() {
// 创建一个Person实例
p := Person{
Name: "张三",
Age: 30,
Address: "上海市",
}
// Marshal: 结构体转JSON字符串
jsonData, err := json.Marshal(p)
if err != nil {
log.Fatalf("JSON marshaling failed: %s", err)
}
fmt.Printf("JSON data: %s\n", jsonData)
// Unmarshal: JSON字符串转结构体
var person Person
err = json.Unmarshal(jsonData, &person)
if err != nil {
log.Fatalf("JSON unmarshaling failed: %s", err)
}
fmt.Printf("Unmarshaled data: %+v\n", person)
}
这段代码首先定义了一个Person
结构体,并使用json.Marshal
函数将一个Person
实例序列化为JSON字符串,然后使用json.Unmarshal
函数将JSON字符串反序列化回Person
结构体实例。代码中包含了错误处理,以确保在出现错误时程序能够恰当地响应。
评论已关闭