GO语言的JSON02---反序列化

package main

import (
	"encoding/json"
	"fmt"
)

type Human struct {
	Name string
	Age int
	Rmb float64
	Gender bool
	Hobbies []string
}

var jsonStr = `{
		"name":"梅川酷子",
		"age":40,
		"rmb":12345.123,
		"gender":false,
        "hobbies":["抽烟","喝酒","烫头"]
	}`

var jsonStr2 = `[
{
		"name":"梅川酷子",
		"age":40,
		"rmb":12345.123,
		"gender":false,
        "hobbies":["抽烟","喝酒","烫头"]
},
{
		"name":"朴成幸",
		"age":40,
		"rmb":12345.123,
		"gender":false,
        "hobbies":["抽烟","喝酒","烫头"]
}
]`

//将json反序列化为Map
func main051() {
	retMap := make(map[string]interface{})
	err := json.Unmarshal([]byte(jsonStr), &retMap)
	if err != nil{
		fmt.Println("反序列化失败,err=",err)
		return
	}
	fmt.Println(retMap)
}

//将json数组反序列化为切片
func main052() {
	retSlice := make([]map[string]interface{},0)
	err := json.Unmarshal([]byte(jsonStr2), &retSlice)
	if err != nil{
		fmt.Println("反序列化失败,err=",err)
		return
	}
	fmt.Println(retSlice)
}

/*将json对象反序列化为结构体*/
func main053() {
	human := new(Human)
	err := json.Unmarshal([]byte(jsonStr), human)
	if err != nil{
		fmt.Println("反序列化失败,err=",err)
		return
	}
	fmt.Println(human)
}

/*将json数组反序列化为切片嵌套结构体*/
func main() {
	retSlice := make([]Human, 0)
	err := json.Unmarshal([]byte(jsonStr2), &retSlice)
	if err != nil{
		fmt.Println("反序列化失败,err=",err)
		return
	}
	fmt.Println(retSlice)
}

  

猜你喜欢

转载自www.cnblogs.com/yunweiqiang/p/11973804.html