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---序列化的更多相关文章

  1. Swift语言精要 - 序列化和反序列化

    在swift中你可以把一个对象转换成为数据,你所要做的就是 首先,你需要让对象实现NSObject和NSCoding协议. 其次,实现以下两个方法: encodeWithCoder init(code ...

  2. GO语言的JSON02---反序列化

    package main import ( "encoding/json" "fmt" ) type Human struct { Name string Ag ...

  3. go 语言的序列化与反序列化

    与c 语言一样, 在网络编程中, go语言同样需要进行序列化与反序列化 在c语言中, 通常需要一块内存缓冲区用来收 发数据.缓冲区一般定义成char *buff类型. 当需要发送 数据时, 直接使用m ...

  4. 超越 JSON: Spearal 序列化协议简介

      Spearal 是一个新的开源的序列化协议,这个协议旨在初步替换JSON 将HTML和移动应用连接到Java的后端. Spearal的主要目的是提供一个序列协议,这个协议即使是在端点间传输的复杂的 ...

  5. Objective-C NSData与实现NSCoding协议进行序列化和反序列化

    1.NSData NSData是Objective-C语言中数据的基本类型,其成分可以理解为字节指针和长度的封装的类,来看看源代码 @interface NSData : NSObject <N ...

  6. php 序列化(serialize)格式详解

    1.前言 PHP (从 PHP 3.05 开始)为保存对象提供了一组序列化和反序列化的函数:serialize.unserialize.不过在 PHP 手册中对这两个函数的说明仅限于如何使用,而对序列 ...

  7. Strom序列化机制

    Storm 中的 tuple可以包含任何类型的对象.由于Storm 是一个分布式系统,所以在不同的任务之间传递消息时Storm必须知道怎样序列化.反序列化消息对象. Storm 使用 Kryo库对对象 ...

  8. Pythoy 数据类型序列化——json&pickle 模块

    Pythoy 数据类型序列化--json&pickle 模块 TOC 什么是序列化/反序列化 pickle 模块 json 模块 对比json和pickle json.tool 命令行接口 什 ...

  9. javascript对象序列化(对象与JSON字符串的互换)

    前一段时间用到h5的本地存储---需要把某个js对象存储在浏览器的本地存储中,用到了javascript对象的序列化与反序列化 所谓的序列化就是将对象的状态信息转换为可以存储或传输的形式的过程,基本上 ...

  10. Golang语言下使用Protocol Buffer教程

    代码仓库地址 一.介绍 Protobuf是Google旗下的一款平台无关,语言无关,可扩展的序列化结构数据格式.所以很适合用做数据存储和作为不同应用,不同语言之间相互通信的数据交换格式,只要实现相同的 ...

随机推荐

  1. python set 一些用法

    add(增加元素) name = set(['Tom','Lucy','Ben']) name.add('Juny') print(name)#输出:{'Lucy', 'Juny', 'Ben', ' ...

  2. AI数学基础之:P、NP、NPC问题

    目录 简介 P问题 NP问题 NP问题的例子 有些NP问题很难解决 NPC问题 NP-hard P和NP问题 简介 我们在做组合优化的时候需要去解决各种问题,根据问题的复杂度不同可以分为P.NP.NP ...

  3. php异常及错误信息捕获并记录日志实现方法全解析

    php异常处理 什么是异常? PHP 5 提供了一种新的面向对象的错误处理方法.异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程.这种情况称为异常. 当异常被触发时,通常会发生: 当前代码 ...

  4. 【beego】beego的路由设置

    beego 存在三种方式的路由:固定路由.正则路由.自动路由 基础路由 从 beego 1.2 版本开始支持了基本的 RESTful 函数式路由,应用中的大多数路由都会定义在 routers/rout ...

  5. 堆栈上的舞蹈之释放重引用(UAF) 漏洞原理实验分析

    0x01 前言 释放重引用的英文名名称是 Use After Free,也就是著名的 UAF 漏洞的全称.从字面意思可以看出 After Free 就是释放后的内存空间,Use 就是使用的意思,使用释 ...

  6. CVE-2017-11826:Office Open XML 标签嵌套解析混淆漏洞

    \x01 前言 CVE-2017-11826 据说是 360 在 2017 年 9 月底发现的一个关于 XML 格式解析的一个漏洞,之后微软在 10 月份发布了关于 CVE-2017-11826 的补 ...

  7. PWD 好网站

    http://angelboy.logdown.com/ https://wizardforcel.gitbooks.io/sploitfun-linux-x86-exp-tut/content/ h ...

  8. Spring Boot集成sharding-jdbc实现分库分表

    一.水平分割 1.水平分库 1).概念:以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中.2).结果每个库的结构都一样:数据都不一样:所有库的并集是全量数据: 2.水平分表 1).概念以字段 ...

  9. css 实现三角形

    #demo1 { width: 0; height: 0; border-top: 100px solid rgba(255, 0, 0, 1); border-bottom: 50px solid ...

  10. Nebula Graph 的 Ansible 实践

    本文首发于 Nebula Graph 公众号 NebulaGraphCommunity,Follow & 看大厂图数据库技术实践 背景 在 Nebula-Graph 的日常测试中,我们会经常在 ...