Go Json序列化

   日期:2020-07-07     浏览:80    评论:0    
核心提示:Json的序列化介绍 json 序列化:将有 key-value 结构的数据类型(比如结构体、map、切片)序列化成 json 字符串的操作。 应用案例 这里介绍一下结构体、map 和切片的序列化,其它数据类型的序列化类似。 funcMarshalfunc Marshal(v interface{}) ([]byte, error)详见文档:https://studygolang.com/pkgdoc演示案例1: 结构体序列化 //定义一个结构体type.

Json序列化

  • 介绍
    • json 序列化:将有 key-value 结构的数据类型(比如结构体、map、切片)序列化成 json 字符串的操作。
  • 应用案例
    • 这里介绍一下结构体、map 和切片的序列化,其它数据类型的序列化类似。
  • func Marshal
func Marshal(v interface{}) ([]byte, error)
  • 详见文档https://studygolang.com/pkgdoc
  • 注意事项
    • 对于结构体的序列化,如果我们希望序列化后的 key的名字,又我们自己重新制定,那么可以给struct指定一个 tag 标签.
  • 演示案例1:
    • 结构体序列化
//定义一个结构体
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 := json.Marshal(&monster) //..
	if err != nil {
		fmt.Printf("序列号错误 err=%v\n", err)
	}
	//输出序列化后的结果
	fmt.Printf("monster序列化后=%v\n", string(data))
}

  • 输出结果:
monster序列化后={"monster_name":"牛魔王","monster_age":500,"Birthday":"2011-11-11","Sal":8000,"Skill":"牛魔拳"}
  • 演示案例2:
    • map序列化
//将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 := json.Marshal(a)
	if err != nil {
		fmt.Printf("序列化错误 err=%v\n", err)
	}
	//输出序列化后的结果
	fmt.Printf("a map 序列化后=%v\n", string(data))
}
  • 输出结果:
a map 序列化后={"address":"洪崖洞","age":30,"name":"红孩儿"}
  • 演示案例3:
    • 切片序列化
/演示对切片进行序列化, 我们这个切片 []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 := json.Marshal(slice)
	if err != nil {
		fmt.Printf("序列化错误 err=%v\n", err)
	}
	//输出序列化后的结果
	fmt.Printf("slice 序列化后=%v\n", string(data))	
}
  • 输出结果:
slice 序列化后=[{"address":"北京","age":"7","name":"jack"},{"address":["墨西哥","夏威夷"],"age":"20","name":"tom"}]
  • 演示案例4:
    • 基本数据类型序列化
      • 对基本数据类型序列化,对基本数据类型进行序列化意义不大
/对基本数据类型序列化,对基本数据类型进行序列化意义不大
func testFloat64() {
	var num1 float64 = 2345.67

	//对num1进行序列化
	data, err := json.Marshal(num1)
	if err != nil {
		fmt.Printf("序列化错误 err=%v\n", err)
	}
	//输出序列化后的结果
	fmt.Printf("num1 序列化后=%v\n", string(data))
}
  • 输出结果:
num1 序列化后=2345.67

 

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服