go 中 json 的序列化

时间:2025-03-08 08:25:12
  • package main
  • import (
  • "encoding/json"
  • "fmt"
  • )
  • // 定义一个结构体
  • type Monster struct {
  • Name string `json:"monster_name"` // 反射机制
  • Age int `json:"monster_age"`
  • Birthday string
  • Sal float64
  • Skill string
  • }
  • // 将结构体进行序列化
  • func testStruct() {
  • monster := Monster{
  • Name: "牛魔王",
  • Age: 500,
  • Birthday: "2011-11-11",
  • Sal: 8000.0,
  • Skill: "牛魔拳",
  • }
  • // 将 monster 序列化
  • data, err := (&monster)
  • if err != nil {
  • ("序列号错误 err=%v\n", err)
  • }
  • // 输出序列化后的结果
  • ("monster序列化后=%v\n", string(data))
  • }
  • // 将 map 进行序列化
  • func testMap() {
  • // 定义一个 map
  • var a map[string]interface{}
  • // 使用 map,需要 make
  • a = make(map[string]interface{})
  • a["name"] = "红孩儿"
  • a["age"] = 30
  • a["address"] = "洪崖洞"
  • // 将 a 这个 map 进行序列化
  • // 将 monster 序列化
  • data, err := (a)
  • if err != nil {
  • ("序列化错误 err=%v\n", err)
  • }
  • // 输出序列化后的结果
  • ("a map 序列化后=%v\n", string(data))
  • }
  • // 对切片进行序列化, 切片定义为 []map[string]interface{}
  • func testSlice() {
  • var slice []map[string]interface{}
  • var m1 map[string]interface{}
  • // 使用map 前,需要先 make
  • m1 = make(map[string]interface{})
  • m1["name"] = "jack"
  • m1["age"] = "7"
  • m1["address"] = "北京"
  • slice = append(slice, m1)
  • var m2 map[string]interface{}
  • // 使用map 前,需要先 make
  • m2 = make(map[string]interface{})
  • m2["name"] = "tom"
  • m2["age"] = "20"
  • m2["address"] = [2]string{"墨西哥", "夏威夷"}
  • slice = append(slice, m2)
  • // 将切片进行序列化操作
  • data, err := (slice)
  • if err != nil {
  • ("序列化错误 err=%v\n", err)
  • }
  • // 输出序列化后的结果
  • ("slice 序列化后=%v\n", string(data))
  • }
  • // 对基本数据类型序列化,对基本数据类型进行序列化意义不大
  • func testFloat64() {
  • var num1 float64 = 2345.67
  • // 对 num1 进行序列化
  • data, err := (num1)
  • if err != nil {
  • ("序列化错误 err=%v\n", err)
  • }
  • // 输出序列化后的结果
  • ("num1 序列化后=%v\n", string(data))
  • }
  • func main() {
  • // 演示将结构体, map , 切片进行序列
  • ("------------------------------------------------------------------------对结构体进行序列化----------------------")
  • testStruct()
  • ("------------------------------------------------------------------------对map进行序列化------------------------")
  • testMap()
  • ("------------------------------------------------------------------------对切片进行序列化------------------------")
  • testSlice()
  • ("------------------------------------------------------------------------对基础数据类型进行序列化------------------")
  • testFloat64()
  • }