1.使用 json.Marshal 和 json.Unmarshal
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
// 使用 json.Marshal 将结构体转换为 JSON 字符串
p := Person{Name: "Alice", Age: 30}
jsonBytes, err := json.Marshal(p)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(jsonBytes))
// 使用 json.Unmarshal 将 JSON 字符串转换为结构体
var newP Person
err = json.Unmarshal(jsonBytes, &newP)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(newP)
}
2.使用编码器和解码器
package main
import (
"bytes"
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
// 使用编码器将结构体编码为 JSON 字符串
p := Person{Name: "Alice", Age: 30}
var buf bytes.Buffer
encoder := json.NewEncoder(&buf)
err := encoder.Encode(p)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(buf.String())
// 使用解码器将 JSON 字符串解码为结构体
var newP Person
decoder := json.NewDecoder(&buf)
err = decoder.Decode(&newP)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(newP)
}