GO语言的JSON01---序列化

Posted xiaoqiang1_1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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))
}

  

以上是关于GO语言的JSON01---序列化的主要内容,如果未能解决你的问题,请参考以下文章

GolangGo 语言 JSON 的序列化与反序列化实践

GolangGo 语言 JSON 的序列化与反序列化实践

GolangGo 语言 JSON 的序列化与反序列化实践

GolangGo 语言 JSON 的序列化与反序列化实践

golang的xorm如何将[]map[string][]byte 格式的数据序列化成json输出

Go语言的JSON输入(解码)(反序列化)之struct存储