key-value
下面分别演示结构体,map,切片,基本类型序列化成json字符串。
案例1:结构体的序列化
package main
import (
"fmt"
"encoding/json"
)
//定义一个结构体
type Hero struct{
Name string `json:"hero_name"` //起别名为:hero_name
Age int `json:"hero_age"`
Birthday string
Sal float64
Skill string
}
func testStruct() {
hero := Hero{
Name:"张三丰",
Age:88,
Birthday:"2009-11-11",
Sal:8000.0,
Skill:"教武当剑法!!",
}
//将monster序列化
data, err := json.Marshal(&hero)
if err != nil{
fmt.Printf("序列号错误 err=%v\n",err)
}
//输出序列化后的结果
fmt.Printf("序列化后=%v\n",string(data))
}
func main() {
testStruct()
}
执行结果如下图所示:
案例2:map的序列化
package main
import (
"encoding/json"
"fmt"
)
//将map进行序列化
func testMap() {
//定义一个map
var a map[string]interface{}
a = make(map[string]interface{})
a["name"] = "张无忌"
a["age"] = 22
a["address"] = "冰火岛"
//将a这个map进行序列化
data, err := json.Marshal(a)
if err != nil {
fmt.Printf("序列化错误 err=%v\n",err)
}
//输出序列化之后的结果
fmt.Printf("序列化后=%v\n",string(data))
}
func main() {
testMap()
}
执行结果如下:
案例3:切片的序列化
package main
import (
"encoding/json"
"fmt"
)
//将切片进行序列化
func testSlice() {
var slice []map[string]interface{}
var m1 map[string]interface{}
m1 = make(map[string]interface{})
m1["name"] = "张无忌"
m1["age"] = 25
m1["address"] = "冰火岛"
slice = append(slice,m1)
var m2 map[string]interface{}
m2 = make(map[string]interface{})
m2["name"] = "张三丰"
m2["age"] = 89
m2["address"] = [2]string{"武当山","夏威夷"}
slice = append(slice,m2)
//将切片进行序列化
data, err := json.Marshal(slice)
if err != nil {
fmt.Printf("序列化错误 err=%v\n",err)
}
//输出序列化之后的结果
fmt.Printf("序列化后=%v\n",string(data))
}
func main() {
testSlice()
}
执行结果如下图:
案例4:基本数据类型的序列化(对基本数据类型进行序列化意义不大)
package main
import (
"encoding/json"
"fmt"
)
//将基本数据类型进行序列化
func testFloat64() {
var num float64 = 3456.85
//对num进行序列化
data, err := json.Marshal(num)
if err != nil {
fmt.Printf("序列化错误 err=%v\n",err)
}
//输出序列化之后的结果
fmt.Printf("序列化后=%v\n",string(data))
}
func main() {
testFloat64()
}
执行结果如下图所示: