zoukankan      html  css  js  c++  java
  • GO语言的JSON01---序列化

    package main
    
    import (
    	"encoding/json"
    	"fmt"
    )
    
    /*
    定义待序列化结构体
    属性一定要可见,否则json包无法访问
    */
    type Person struct {
    	Name string
    	Age int
    	Rmb float64
    	Gender bool
    	Hobbies []string
    }
    
    func NewPerson(name string,age int,rmb float64,gender bool,hobbies []string) *Person {
    	person :=new(Person)
    	person.Name = name
    	person.Age = age
    	person.Rmb = rmb
    	person.Gender = gender
    	person.Hobbies = hobbies
    	return person
    }
    
    /*
    init函数会在main函数之前被系统调用
    init函数用于main之前的初始化工作
    */
    var person *Person
    func init() {
    	fmt.Println("init")
    	person = NewPerson("张全蛋", 20, 0.5, true, []string{"抽烟", "喝酒", "烫头"})
    	fmt.Println(person)
    }
    
    /*序列化结构体*/
    func main041() {
    	fmt.Println("main")
    	bytes, err := json.Marshal(*person)
    	if err != nil{
    		fmt.Println("序列化失败err=",err)
    		return
    	}
    	fmt.Println(string(bytes))
    }
    
    /*序列化Map*/
    func main042() {
    	dataMap := make(map[string]interface{})
    	dataMap["Name"] = "张全蛋"
    	dataMap["Age"] = "20"
    	dataMap["rmb"] = "0.5"
    	dataMap["gender"] = true
    	dataMap["hobbies"] = []string{"抽烟", "喝酒", "烫头"}
    
    	fmt.Println("main")
    	bytes, err := json.Marshal(dataMap)
    	if err != nil{
    		fmt.Println("序列化失败err=",err)
    		return
    	}
    	fmt.Println(string(bytes))
    }
    
    /*序列化切片(内置Map)*/
    func main043() {
    	dataMap := make(map[string]interface{})
    	dataMap["Name"] = "张全蛋"
    	dataMap["Age"] = "20"
    	dataMap["rmb"] = "0.5"
    	dataMap["gender"] = true
    	dataMap["hobbies"] = []string{"抽烟", "喝酒", "烫头"}
    
    	dataMap2 := make(map[string]interface{})
    	dataMap2["Name"] = "张lia蛋"
    	dataMap2["Age"] = "20"
    	dataMap2["rmb"] = "0.5"
    	dataMap2["gender"] = true
    	dataMap2["hobbies"] = []string{"抽烟", "喝酒", "烫头"}
    
    	dataSlice := make([]map[string]interface{}, 0)
    	dataSlice = append(dataSlice, dataMap,dataMap2)
    
    	fmt.Println("main")
    	bytes, err := json.Marshal(dataSlice)
    	if err != nil{
    		fmt.Println("序列化失败err=",err)
    		return
    	}
    	fmt.Println(string(bytes))
    }
    
    /*序列化切片(内置结构体对象)*/
    func main() {
    	person1 := *NewPerson("张全蛋", 20, 0.5, true, []string{"抽烟", "喝酒", "烫头"})
    	person2 := *NewPerson("张俩蛋", 10, 0.5, true, []string{"抽烟", "喝酒", "烫头"})
    
    	dataSlice := make([]Person, 0)
    	dataSlice = append(dataSlice, person1, person2)
    
    	fmt.Println("main")
    	bytes, err := json.Marshal(dataSlice)
    	if err != nil{
    		fmt.Println("序列化失败err=",err)
    		return
    	}
    	fmt.Println(string(bytes))
    }
    

      

  • 相关阅读:
    maven配置成功,但显示'cmd' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
    java ee 4周
    java 3周
    XML
    web后台过程
    【转】Maven详细
    HDFS 客户端读写操作详情
    HDFS DataNode详解
    HDFS NameNode详解
    CSS的四种样式
  • 原文地址:https://www.cnblogs.com/yunweiqiang/p/11973636.html
Copyright © 2011-2022 走看看