序列化:
package main
import(
"fmt"
"encoding/json"
)
type Monster struct{
Name string `json:"monster_name"`
Age int
Birthday string
Sal float64
skill string
}
func testStruct(){
monster := Monster{
Name: "liyuyuan",
Age: 24,
Birthday: "19960216",
Sal: 8000.0,
skill: "吃饭睡觉打豆豆",
}
data,err := json.Marshal(&monster)
if err != nil{
fmt.Printf("序列化失败")
}
fmt.Println(string(data))
}
func testMap(){
var a map[string]interface{}
a = make(map[string]interface{})
a["liyuyuan"] = "xiong"
data,err := json.Marshal(a)
if err != nil{
fmt.Printf("序列化失败")
}
fmt.Println(string(data))
}
func testslice(){
var slice []map[string]interface{}
var m1 map[string]interface{}
m1 = make(map[string]interface{})
m1["liyuyuan"] = "xiong"
m1["年龄"] = 24
m1["xuhuan"] = "xiongchunhui"
slice = append(slice,m1)
var m2 map[string]interface{}
m2 = make(map[string]interface{})
m2["xiongchunhui"] = "li"
m2["年龄"] = 23
m2["xihuan"] = "liyuyuan"
slice = append(slice,m2)
data,err := json.Marshal(&slice)
if err != nil{
fmt.Printf("序列化失败")
}
fmt.Println(string(data))
}
func testFloat64(){
var num1 float64 = 300.21
data,err := json.Marshal(num1)
if err != nil{
fmt.Printf("序列化失败")
}
fmt.Println(string(data))
}
func main(){
testStruct()
testMap()
testslice()
testFloat64()
}
反序列化:
package main
import(
"fmt"
"encoding/json"
)
type Monster struct{
Name string
Age int
Birthday string
Sal float64
skill string
}
func unmarshalStruct(){
str := "{\"Name\": \"liyuyuan\",\"Age\": 24,\"Birthday\":"+
" \"19960216\",\"Sal\": 8000.0,\"skill\": \"吃饭睡觉打豆豆\"}"
var monster Monster
err := json.Unmarshal([]byte(str), &monster)
if err != nil{
fmt.Println("出错",err)
}
fmt.Printf("%v%v",monster,monster.Name)
}
func unmarshalMap(){
str := "{\"Name\": \"liyuyuan\",\"Age\": 24,\"Birthday\":"+
" \"19960216\",\"Sal\": 8000.0,\"skill\": \"吃饭睡觉打豆豆\"}"
var a map[string]interface{}
err := json.Unmarshal([]byte(str), &a)
if err != nil{
fmt.Println("出错",err)
}
}
func main(){
unmarshalStruct()
unmarshalMap()
}