码迷,mamicode.com
首页 > Web开发 > 详细

(三十八)golang--json(对切片、map、结构体进行序列化)

时间:2019-11-26 21:11:15      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:com   序列化   coding   三十八   span   mamicode   object   http   func   

JSON(javascript object notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。key-val

JSON是在2001年开始推广的数据格式,目前已成为主流的数据格式。

JSON易于机器解析和生成,并有效地提升网络传输效率。通常程序在网络传输时会先将数据(结构体、map)等序列化成json字符串,到接收方得到json数据时,再反序列化恢复成原来的数据类型。这种方式已成为各个语言的标准。

要解析成json格式,struct里面的字段必须大写!!!不然解析出来的是{}

package main

import (
    "encoding/json"
    "fmt"
)

type monster struct {
    Name     string
    Age      int
    Birthday string
    Sal      float64
    Skill    string
}

func testStruct() {
    m := monster{
        Name:     "牛魔王",
        Age:      10,
        Birthday: "1994-09-18",
        Sal:      10000.0,
        Skill:    "牛魔拳",
    }
    //序列化
    data, err := json.Marshal(&m)
    if err != nil {
        fmt.Println("序列化失败,error=", err)
    }
    fmt.Printf("序列化之后的结果:%v\n", string(data))
}

func testMap() {
    var a map[string]interface{}
    a = make(map[string]interface{})
    a["name"] = "孙悟空"
    a["age"] = 20
    a["address"] = "水帘洞"
    a["skill"] = "七十二变"
    data, err := json.Marshal(a)
    if err != nil {
        fmt.Println("序列化失败,error=", err)
    }
    fmt.Printf("序列化之后的结果:%v\n", string(data))
}

func testSlice() {
    var slice []map[string]interface{}
    var m1 map[string]interface{}

    m1 = make(map[string]interface{})
    m1["name"] = "孙悟空"
    m1["age"] = 20
    m1["address"] = "水帘洞"
    m1["skill"] = [2]string{"七十二变", "如意金箍棒"}
    slice = append(slice, m1)
    var m2 map[string]interface{}

    m2 = make(map[string]interface{})
    m2["name"] = "猪八戒"
    m2["age"] = 30
    slice = append(slice, m2)
    data, err := json.Marshal(slice)
    if err != nil {
        fmt.Println("序列化失败,error=", err)
    }
    fmt.Printf("序列化之后的结果:%v\n", string(data))
}

func testFloat64() {
    var a float64
    a = 0.987
    data, err := json.Marshal(a)
    if err != nil {
        fmt.Println("序列化失败,error=", err)
    }
    fmt.Printf("序列化之后的结果:%v\n", string(data))
}

func main() {
    testStruct()
    testMap()
    testSlice()
    testFloat64()
}

技术图片

 

对普通数据类型进行序列化是没意义的,只是相当于转换成string类型。 

(三十八)golang--json(对切片、map、结构体进行序列化)

标签:com   序列化   coding   三十八   span   mamicode   object   http   func   

原文地址:https://www.cnblogs.com/xiximayou/p/11938441.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!