概述
JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的、键值对的数据交换格式。结构由大括号’{}’,中括号’[]’,逗号’,’,冒号’;’,双引号’""'组成,包含的数据类型有Object,Number,Boolean,String,Array, NULL等。
目录
JSON序列化
将Go语言原数据转换成JSON格式字符串
语法:
//传map,结构体,slice...,返回结果byte切片和error是否错误
func Marshal(v interface{
}) ([]byte, error)
-
结构体转JSON
type Person struct{ Name string //姓名 Age int //年龄 Sex rune //性别 Hobby []string //爱好 Money float64 //钱 } person:=Person{ Name:"张三",Age:18,Sex:'男',Hobby:[]string{ "听音乐","看书","打篮球"},Money:18.62} if bytes,err:=json.Marshal(person);err!=nil{ fmt.Println("编码错误",err) }else{ //{"Name":"张三","Age":18,"Sex":30007,"Hobby":["听音乐","看书","打篮球"],"Money":18.62} fmt.Println("编码成功:",string(bytes)) }
-
map转JSON
p:=make(map[string]interface{ },0) p["0"]=map[string]interface{ }{ "name":"张三","age":18,"sex":'男',"hobby":[]string{ "听音乐","看书","打篮球"},"money":18.62} p["1"]=map[string]interface{ }{ "name":"李四","age":19,"sex":'女',"hobby":[]string{ "听音乐","看电影","打足球"},"money":1.62} if bytes,err:=json.Marshal(p);err!=nil{ fmt.Println("编码错误",err) }else{ fmt.Println(string(bytes)) }
-
切片转JSON
p:=make([]map[string]interface{ },0) p1:=map[string]interface{ }{ "name":"张三","age":18,"sex":'男',"hobby":[]string{ "听音乐","看书","打篮球"},"money":18.62} p2:=map[string]interface{ }{ "name":"李四","age":19,"sex":'女',"hobby":[]string{ "听音乐","看电影","打足球"},"money":1.62} p=append(p,p1,p2) if bytes,err:=json.Marshal(p);err!=nil{ fmt.Println("编码错误",err) }else{ fmt.Println(string(bytes)) }
JSON反序列化
将JSON格式字符串转换成Go语言原数据
//传入JSON字符串的byte字节和Go接收数据的类型指针,返回err错误,是否返回成功
func Unmarshal(data []byte, v interface{
}) error
-
JSON转map
str:=`{"Name":"张三","Age":18,"Sex":30007,"Hobby":["听音乐","看书","打篮球"],"Money":18.62}` p:=make(map[string]interface{ }, 0) if err:=json.Unmarshal([]byte(str),&p);err!=nil{ fmt.Println("解码失败",err) }else{ fmt.Println("解析成功",p) }
-
JSON转结构体
str:=`{"Name":"张三","Age":18,"Sex":30007,"Hobby":["听音乐","看书","打篮球"],"Money":18.62}` var p Person if err:=json.Unmarshal([]byte(str),&p);err!=nil{ fmt.Println("解码失败",err) }else{ fmt.Println("解析成功"