Json序列化 指,将具有key-value(键 -> 值)结构的数据类型,例如:go语言中的map, slice,struct...序列化成json格式的字符串的操作。json是一种主流的数据传输格式,灵活轻便...

需要导入一个包 "encoding/json"

上代码

Golang - struct 结构体序列化代码段

//定义一个简单的结构体 Monster
type Monster struct {
    Name     string
    Age      int
    Birthday string
    Sal      float64
    Skill    string
}

//写一个 testStruct()结构体的序列化方法
func testStruct() {
    monster := Monster{
        Name:     "牛魔王",
        Age:      500,
        Birthday: "2019-10-27",
        Sal:      10000.01,
        Skill:    "牛魔拳",
    }

    // 将Monster结构体序列化
    data, err := json.Marshal(&monster)
    if err != nil {
        fmt.Printf("序列化错误 err is %v", err)
    }
    //输出序列化结果
    fmt.Printf("monster序列化后 = %v", string(data))
}

Golang - map序列化代码段

// map序列化
func testMap() {
    //定义一个map
    var a map[string]interface{}
    //使用map之前 必须make一下
    a = make(map[string]interface{})
    a["name"] = "红孩儿"
    a["age"] = 18
    a["address"] = "重庆洪崖洞"

    // 将a map结构体序列化
    data, err := json.Marshal(a)
    if err != nil {
        fmt.Printf("序列化错误 err is %v", err)
    }
    //输出序列化结果
    fmt.Printf("map序列化后 = %v", string(data))
}

Golang - slice序列化代码段

// slice进行序列化
func testSlice() {
    var slice []map[string]interface{} // 定义了一个切片,里面是map格式 map[string]interface{}
    var m1 map[string]interface{}      //定义切片中的第一个map M1
    m1 = make(map[string]interface{})
    m1["name"] = "Matt"
    m1["age"] = 36
    m1["address"] = [2]string{"重庆沙坪坝", "上海"}
    slice = append(slice, m1)

    var m2 map[string]interface{} //定义切片中的第2个map M2
    m2 = make(map[string]interface{})
    m2["name"] = "damon"
    m2["age"] = 36
    m2["address"] = "沙坪坝"
    slice = append(slice, m2)

    // 将slice进行序列化
    data, err := json.Marshal(slice)
    if err != nil {
        fmt.Printf("序列化错误 err is %v", err)
    }
    //输出序列化结果
    fmt.Printf("slice序列化后 = %v", string(data))
}

完整代码供参考

package main

import (
    "encoding/json"
    "fmt"
)

// Json序列化指,将具有key-value(键 -> 值)结构的数据类型,例如:go语言中的map, slice,struct...序列化成json格式的字符串的操作

//定义一个简单的结构体 Monster
type Monster struct {
    Name     string
    Age      int
    Birthday string
    Sal      float64
    Skill    string
}

//写一个 testStruct()结构体的序列化方法
func testStruct() {
    monster := Monster{
        Name:     "牛魔王",
        Age:      500,
        Birthday: "2019-10-27",
        Sal:      10000.01,
        Skill:    "牛魔拳",
    }

    // 将Monster结构体序列化
    data, err := json.Marshal(&monster)
    if err != nil {
        fmt.Printf("序列化错误 err is %v", err)
    }
    //输出序列化结果
    fmt.Printf("monster序列化后 = %v", string(data))
}

// map序列化
func testMap() {
    //定义一个map
    var a map[string]interface{}
    //使用map之前 必须make一下
    a = make(map[string]interface{})
    a["name"] = "红孩儿"
    a["age"] = 18
    a["address"] = "重庆洪崖洞"

    // 将a map结构体序列化
    data, err := json.Marshal(a)
    if err != nil {
        fmt.Printf("序列化错误 err is %v", err)
    }
    //输出序列化结果
    fmt.Printf("map序列化后 = %v", string(data))
}

// slice进行序列化
func testSlice() {
    var slice []map[string]interface{} // 定义了一个切片,里面是map格式 map[string]interface{}
    var m1 map[string]interface{}      //定义切片中的第一个map M1
    m1 = make(map[string]interface{})
    m1["name"] = "Matt"
    m1["age"] = 36
    m1["address"] = [2]string{"重庆沙坪坝", "上海"}
    slice = append(slice, m1)

    var m2 map[string]interface{} //定义切片中的第2个map M2
    m2 = make(map[string]interface{})
    m2["name"] = "damon"
    m2["age"] = 36
    m2["address"] = "沙坪坝"
    slice = append(slice, m2)

    // 将slice进行序列化
    data, err := json.Marshal(slice)
    if err != nil {
        fmt.Printf("序列化错误 err is %v", err)
    }
    //输出序列化结果
    fmt.Printf("slice序列化后 = %v", string(data))
}

func main() {
    //结构体, map, slice进行序列化
    testStruct()
    testMap()
    testSlice()
}

看结果

struct, map, slice 的json序列化结果

请注意

  • 发表于 2020-01-09 22:22:44
  • 阅读 ( 689 )
  • 分类:前端