Json序列化
package main
import (
"fmt"
"encoding/json"
)
type Monster struct {
Name string `json:"name"`
Age int `json:"age"`
Birthday string
Sal float64
skill string
}
func testStruct ( ) {
monster := Monster{
Name : "牛魔王" ,
Age : 500 ,
Birthday : "2020-2-29" ,
Sal : 8000.0 ,
skill : "牛魔拳" ,
}
data, err := json. Marshal ( & monster)
if err != nil {
fmt. Printf ( "序列号错误 err=%v\n" , err)
}
fmt. Printf ( "monster序列化后=%v\n" , string ( data) )
}
func testMap ( ) {
var a map [ string ] interface { }
a = make ( map [ string ] interface { } )
a[ "name" ] = "红孩儿"
a[ "age" ] = 30
a[ "adress" ] = "火云洞"
data, err := json. Marshal ( & a)
if err != nil {
fmt. Printf ( "序列号错误 err=%v\n" , err)
}
fmt. Printf ( "a序列化后=%v\n" , string ( data) )
}
func testSlice ( ) {
var slice [ ] map [ string ] interface { }
var m1 map [ string ] interface { }
m1 = make ( map [ string ] interface { } )
m1[ "name" ] = "jack"
m1[ "age" ] = "7"
m1[ "adress" ] = "beijing"
slice = append ( slice, m1)
var m2 map [ string ] interface { }
m2 = make ( map [ string ] interface { } )
m2[ "name" ] = "tom"
m2[ "age" ] = "20"
m2[ "adress" ] = "nanjing"
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) )
}
func testFloat64 ( ) {
var num1 float64 = 23.45
data, err := json. Marshal ( num1)
if err != nil {
fmt. Printf ( "序列号错误 err=%v\n" , err)
}
fmt. Printf ( "num1列化后=%v\n" , string ( data) )
}
func main ( ) {
testStruct ( )
testMap ( )
testSlice ( )
testFloat64 ( )
}
Json反序列化
package main
import (
"fmt"
"encoding/json"
)
type Monster struct {
Name string `json:"name"`
Age int `json:"age"`
Birthday string
Sal float64
skill string
}
func unmarshalStruct ( ) {
str := "{\"Name\":\"牛魔王\",\"Age\":500,\"Birthday\":\"2020-2-29\",\"Sal\":8000}"
var monster Monster
err := json. Unmarshal ( [ ] byte ( str) , & monster)
if err != nil {
fmt. Printf ( "unmarshal err=%v\n" , err)
}
fmt. Printf ( "反序列化后 monster=%v\n" , monster)
}
func unmarshalMap ( ) {
str := "{\"Name\":\"牛魔王\",\"Age\":500,\"Birthday\":\"2020-2-29\",\"Sal\":8000}"
var a map [ string ] interface { }
err := json. Unmarshal ( [ ] byte ( str) , & a)
if err != nil {
fmt. Printf ( "unmarshal err=%v\n" , err)
}
fmt. Printf ( "反序列化后 monster=%v\n" , a)
}
func unmarshalSlice ( ) {
str := "[{\"adress\":\"beijing\",\"age\":\"7\",\"name\":\"jack\"}," +
"{\"adress\":\"nanjing\",\"age\":\"20\",\"name\":\"tom\"}]"
var slice [ ] map [ string ] interface { }
err := json. Unmarshal ( [ ] byte ( str) , & slice)
if err != nil {
fmt. Printf ( "unmarshal err=%v\n" , err)
}
fmt. Printf ( "反序列化后 monster=%v\n" , slice)
}
func main ( ) {
unmarshalStruct ( )
unmarshalMap ( )
unmarshalSlice ( )
}