package main
 
import (
    "encoding/json"
    "fmt"
)
 
// 定义一个结构体
type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}
 
func main() {
    // 创建一个Person实例
    p := Person{
        Name: "张三",
        Age:  30,
    }
 
    // 结构体转换为JSON
    jsonBytes, err := json.Marshal(p)
    if err != nil {
        fmt.Println("转换为JSON时发生错误:", err)
        return
    }
    fmt.Println("结构体转换为JSON:", string(jsonBytes))
 
    // JSON转换为结构体
    var personFromJSON Person
    err = json.Unmarshal(jsonBytes, &personFromJSON)
    if err != nil {
        fmt.Println("转换为结构体时发生错误:", err)
        return
    }
    fmt.Printf("JSON转换为结构体: %+v\n", personFromJSON)
}这段代码首先定义了一个Person结构体,并包含了两个字段Name和Age,并使用json标签指定了JSON中的字段名。然后创建了一个Person实例,并使用json.Marshal函数将其转换为JSON字节切片。之后,它使用json.Unmarshal函数将JSON字节切片转换回Person结构体实例。在转换过程中,它还会处理可能发生的错误。