Go Json

Json 是一中轻量级的数据交换格式,易与人阅读和编写。

Json易于解析和生成,有效的提升网络传输效率,通常网络在传输时会先将数据(结构体、map等)序列化成json字符串,到接收方得到json字符串时,在反序列化成对应的数据类型。

go提供了json的序列反序列化的接口

package main

import(
	"fmt"
	"encoding/json"
)

type Stu struct{
	ID int32
	Name string
	age int32
	Score map[string]int32
}

func main(){
	stu := &Stu{
		ID : 01,
		Name : "小明",
		age : 22,
		Score : map[string]int32{
			"数学":100,
			"音乐":0,
		},

	}
	data,_ := json.Marshal(stu)
	fmt.Println(string(data))//输出:{"ID":1,"Name":"小明","Score":{"数学":100,"音乐":0}}
}

  注意:这里面age没有输出出来,是因为age首字符是小写,json无权访问,所以讲age该成大写就行了

但是如果想要输出的全部是小写,这就需要tag标签,这里面就是涉及到反射机制,改成如下即可:

type Stu struct{
	ID int32 `json:"id"`
	Name string `json:"name"`
	//age int32 首字母小写无法被json访问
	Age int32 `json:"age"`
	Score map[string]int32 `json:"score"`
}

  输出为

{"id":1,"name":"小明","age":22,"score":{"数学":100,"音乐":0}}
 
反序列化:
	var stu2 = Stu{}
	json.Unmarshal(data,&stu2)
	fmt.Println(stu2)//输出:{1 小明 22 map[数学:100 音乐:0]}

  

 

posted @ 2020-04-05 15:53  醉深梦始  阅读(955)  评论(0)    收藏  举报