zoukankan      html  css  js  c++  java
  • Go语言学习笔记之序列化与反序列化

    序列化

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    type User struct {
    	Name string `json:"用户名"`//反射机制
    	Age int `json:"年龄"`
    	Sex string `json:"性别"`
    }
    
    func json_Struct() {
    	u:=User{"Jack",23,"男"}
    	data,err:=json.Marshal(&u)
    	if err!=nil{
    		fmt.Println("出错!")
    		return
    	}
    	fmt.Printf("序列化后=%v
    ", string(data))
    }
    
    func json_Map(){
    	mp:=map[string]int{
    		"Jack":21,
    		"Amy":23,
    		"David":89,
    	}
    	data,err:=json.Marshal(&mp)
    	if err!=nil{
    		fmt.Println("出错!")
    	}
    	fmt.Println(string(data))
    
    }
    
    func json_Slice(){
    	arr:=[]map[string]interface{}{
    		{"jack":21},{"tom":23},{"Mg":24},
    	}
    	data,err:=json.Marshal(&arr)
    	if err!=nil{
    		fmt.Println("出错!")
    	}
    	fmt.Println(string(data))
    }
    
    func main() {
    	json_Struct()
    	json_Map()
    	json_Slice()
    	arr:=[...]int{1,2,3,4}
    	data,err:=json.Marshal(&arr)
    	if err!=nil{
    		fmt.Println("出错!")
    	}
    	fmt.Println(string(data))
    }
    

      反序列化

    package main
    import ( "fmt"
    	"encoding/json"
    )
    //定义一个结构体
    type Monster struct {
    	Name string
    	Age int
    	Birthday string //.... Sal float64
    	Skill string
    }
    //演示将 json 字符串,反序列化成 struct
    func unmarshalStruct() {
    	//说明 str 在项目开发中,是通过网络传输获取到.. 或者是读取文件获取到
    	str := "{"Name":"牛魔王","Age":500,"Birthday":"2011-11-11","Sal":8000,"Skill":"牛魔拳"}"
    	//定义一个 Monster 实例
    	var monster Monster
    	err := json.Unmarshal([]byte(str), &monster)
    	if err != nil {
    		fmt.Printf("unmarshal err=%v
    ", err)
    	}
    	fmt.Printf("反序列化后 monster=%v monster.Name=%v 
    ", monster, monster.Name)
    }
    //演示将 json 字符串,反序列化成 map
    func unmarshalMap() {
    	str := "{"address":"洪崖洞","age":30,"name":"红孩儿"}"
    	//定义一个 map
    	var a map[string]interface{}
    	//反序列化
    	//注意:反序列化 map,不需要 make,因为 make 操作被封装到 Unmarshal 函数
    	err := json.Unmarshal([]byte(str), &a)
    	if err != nil {
    		fmt.Printf("unmarshal err=%v
    ", err)
    	}
    	fmt.Printf("反序列化后 a=%v
    ", a)
    }
    
    //演示将 json 字符串,反序列化成切片
    func unmarshalSlice() {
    	str := "[{"address":"北京","age":"7","name":"jack"}," +
    		"{"address":["墨西哥","夏威夷"],"age":"20","name":"tom"}]"
    	//定义一个 slice
    	var slice []map[string]interface{}
    	//反序列化,不需要 make,因为 make 操作被封装到 Unmarshal 函数
    	err := json.Unmarshal([]byte(str), &slice)
    	if err != nil {
    		fmt.Printf("unmarshal err=%v
    ", err)
    	}
    	fmt.Printf("反序列化后 slice=%v
    ", slice)
    }
    func main() {
    	unmarshalStruct()
    	unmarshalMap()
    	unmarshalSlice()
    }
    

      

  • 相关阅读:
    TCP/IP 协议简介
    制作html的旋转太极图
    Redis高可用
    RFID固定资产管理系统解决方案
    为什么要用三维数据可视化?
    Java单元测试技巧之PowerMock
    技术干货 | 如何在 Library 中使用/依赖 mPaaS?
    云原生的进一步具象化
    【阿里云EMR实战篇】以EMR测试集群版本为例,详解 Flink SQL Client 集成 Hive 使用步骤
    【实践案例】Databricks 数据洞察 Delta Lake 在基智科技(STEPONE)的应用实践
  • 原文地址:https://www.cnblogs.com/mango1997/p/15516170.html
Copyright © 2011-2022 走看看