golang json 序列化 和 反序列化

结构体 map slice 数据序列化

公用代码

package main

import(
	"fmt"
	"encoding/json"
)

//转换序列号
func testResult(data interface{}){
  //返回 []byte 所以打印时需要string 转换
  result , err := json.Marshal(&data);
  if err != nil {
	  fmt.Printf("json 序列化错误=%v\n",err)
  }
  fmt.Printf("json 序列化结果=%v\n",string(result))
}

func main()  {
	testStruct()
	testMap()
	testSlice()
}

结构体 序列化

//tag 起别名
type structData struct {
	Name string `json:"name"`
	Age int `json:"age"`
	Pay float64 `json:"pay"`
	Address string `json:"address"`
}

//结构体 转换 json
func testStruct(){
    structName := structData{
		Name : "法外狂徒",
		Age : 30,
		Pay : 100000.0,
		Address : "在国外",
	} 
	testResult(&structName)
	//结果 json 序列化结果={"Name":"法外狂徒","Age":30,"Pay":100000,"Address":"在国外"}
	//结果 json 序列化结果={"name":"法外狂徒","age":30,"pay":100000,"address":"在国外"}
}

map 序列化

//map 转换 json
func testMap(){
    var mapName map[string] interface{}
	mapName = make(map[string] interface{})
	mapName["name"] = "李三"
	mapName["age"] = 16
	mapName["address"] = []string{"天津市","河西区","黑牛城"}
	testResult(mapName)
	//结果 json 序列化结果={"address":["天津市","河西区","黑牛城"],"age":16,"name":"李三"}
}

slice 序列化

//切片 转换 json
func testSlice(){
    var sliceName []map[string] interface{} 	
	n1 := make(map[string] interface{})
	n1["name"] = "李四"
	n1["age"] = 20
	n1["address"] = "喜马拉雅"
	sliceName = append(sliceName,n1)

	n2 := make(map[string] interface{})
	n2["name"] = "欣"
	n2["age"] = 26
	n2["address"] = "安徽"
	sliceName = append(sliceName,n2)
	testResult(sliceName)
	//结果 json 序列化结果=[{"address":"喜马拉雅","age":20,"name":"李四"},{"address":"安徽","age":26,"name":"欣"}]
}

结构体 map slice 数据反序列化

公用代码

package main

import(
	"fmt"
	"encoding/json"
)
//反序列化
func testResult(key string,target interface{}) {
	err := json.Unmarshal([]byte(key),&target)
	if err != nil {
		fmt.Printf("反序列化 错误=%v \n",err)
	}
	// fmt.Printf("反序列化 结果=%v name=%v \n",key,structData.Name)
	fmt.Printf("反序列化 结果=%v\n",key)
}
func main(){
	testStruct()
}

结构体 反序列化

//结构体 反序列化
func testStruct(){
    str := "{\"name\":\"法外狂徒\",\"age\":30,\"pay\":100000,\"address\":\"在国外\"}"

	//定义一个结构体
	var structData structData

	testResult(str,&structData)
	// fmt.Printf("%v",structData.Name)
	//反序列化 结果={"name":"法外狂徒","age":30,"pay":100000,"address":"在国外"}
}

map 反序列化

// map 反序列化
func testMap(){
	str := "{\"address\":[\"天津市\",\"河西区\",\"黑牛城\"],\"age\":16,\"name\":\"李三\"}"
	var mapName map[string] interface{}
	testResult(str,&mapName)
	// fmt.Printf("%v",mapName["address"])
	//反序列化 结果={"address":["天津市","河西区","黑牛城"],"age":16,"name":"李三"}
}

切片slice 反序列化

// 切片slice 反序列化
func testSlice(){
	str := "[{\"address\":\"喜马拉雅\",\"age\":20,\"name\":\"李四\"},{\"address\":\"安徽\",\"age\":26,\"name\":\"欣\"}]"
	var sliceName []map[string] interface{} 	
	testResult(str,&sliceName)
	// for _,v := range(sliceName){
	// 	fmt.Printf("%v \n",v["address"])
	// }
	//喜马拉雅
    //安徽


	//结果 反序列化 结果=[{"address":"喜马拉雅","age":20,"name":"李四"},{"address":"安徽","age":26,"name":"欣"}]
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值