Golang语言之Json序列化

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序列化结果

请注意

本文部分内容,图片,及视频源于网络转载, 不以盈利为目的,不构成商业目的使用, 仅用于学习交流…相关版权归原作者所有。如有异议,请联系我 751749090@qq.com [麦特matt]

将在第一时间作出相关处理.