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))
    }
    

      

  • 相关阅读:
    Uva455
    PAT乙级1059
    PAT乙级1092
    PAT乙级1076
    PAT乙级1065
    PAT乙级1049
    Uva1586
    《肇造区夏》读后感 读书笔记
    《老鼠虱子和历史》读后感 读书笔记
    《胡适口述自传》读后感 读书笔记
  • 原文地址:https://www.cnblogs.com/yunweiqiang/p/11973636.html
Copyright © 2011-2022 走看看