json序列化

go json序列化

标签

type Monster struct {
	Name     string `json:"name"`
	Age      int `json:"age"`
	Birthday string `json:"birthday"`
	Sal      float64 `json:"sal"`
	Skill    string `json:"skill"`
}

就是序列化将里面的字段大写转成小写,也可以重新定义

type Monster struct {
	Name     string `json:"name_n"` //反射机制
	Age      int `json:"age_a"`
	Birthday string `json:"birthday_b"`
	Sal      float64 `json:"sal_s"`
	Skill    string `json:"skill_s"`
}

package main

import (
	"encoding/json"
	"fmt"
)

type Monster struct {
	Name     string
	Age      int
	Birthday string
	Sal      float64
	Skill    string
}

func testStruct() {
	monster := Monster{Name: "牛魔王", Age: 400, Birthday: "3030-10-1", Sal: 32000.0, Skill: "牛魔拳"}
	//将monster序列化
	data ,err :=json.Marshal(&monster)
	if err !=nil{
		fmt.Println("序列化失败,err = ",err)

	}
	fmt.Println("data= ",string(data))

}
//将maps序列化
func testMap(){
	var a map[string]interface{}
	//使用map要make一下
	a = make(map[string]interface{})
	a ["name"]="洗澡"
	data ,err :=json.Marshal(a)
	if err !=nil{
		fmt.Println("序列化失败,err = ",err)

	}
	fmt.Println("data= ",string(data))

}
//将切片序列化,切片有多个map
func testSlice(){
	var slice []map[string]interface{}
	var m1 map[string]interface{}
	m1=make(map[string]interface{})
	m1["name"]="信息"
	//将map放到切片中
	slice = append(slice,m1)
	var m2 map[string]interface{}
	m2=make(map[string]interface{})
	m2["name"]="ss"
	slice = append(slice,m2)
	data ,err :=json.Marshal(slice)
	if err !=nil{
		fmt.Println("序列化失败,err = ",err)

	}
	fmt.Println("data= ",string(data))

}

func main() {
	//演示将结构体,map,切片进行序列化
	testStruct()
	testMap()
	testSlice()

}

go反序列化


package main

import (
	"encoding/json"
	"fmt"
)

type Monster struct {
	Name     string
	Age      int
	Birthday string
	Sal      float64
	Skill    string
}

func unmarshalStruct() {
	srt := "{\"Name\":\"牛魔王\",\"Age\":400,\"Birthday\":\"3030-10-1\",\"Sal\":32000,\"Skill\":\"牛魔拳\"}"
	//创建一个Monster实例
	var monster Monster
	err := json.Unmarshal([]byte(srt), &monster)

	if err != nil {
		fmt.Println("序列化失败,err = ", err)

	}
	fmt.Println("data= ", monster)

}
func unmarshalMap(){
	str := "{\"Name\":\"牛魔王\",\"Age\":400,\"Birthday\":\"3030-10-1\",\"Sal\":32000,\"Skill\":\"牛魔拳\"}"
	var a map[string]interface{}
	//反序列化map,不需要make操作,因为被封装到函数里面了
	err := json.Unmarshal([]byte(str), &a)

	if err != nil {
		fmt.Println("序列化失败,err = ", err)

	}
	fmt.Println("data= ", a)
}

func unmarshalSlice(){
	str := "[{\"Name\":\"王\",\"Age\":\"400\"},{\"Name\":\"牛\",\"Age\":\"400\"}]"
	var a []map[string]interface{}
	//反序列化map,不需要make操作,因为被封装到函数里面了
	err := json.Unmarshal([]byte(str), &a)

	if err != nil {
		fmt.Println("序列化失败,err = ", err)

	}
	fmt.Println("data= ", a)
}


func main() {
	unmarshalStruct()
	unmarshalMap()
	unmarshalSlice()
}
posted @ 2021-02-06 22:58  小子,你摊上事了  阅读(165)  评论(0编辑  收藏  举报