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---序列化的更多相关文章
- Swift语言精要 - 序列化和反序列化
在swift中你可以把一个对象转换成为数据,你所要做的就是 首先,你需要让对象实现NSObject和NSCoding协议. 其次,实现以下两个方法: encodeWithCoder init(code ...
- GO语言的JSON02---反序列化
package main import ( "encoding/json" "fmt" ) type Human struct { Name string Ag ...
- go 语言的序列化与反序列化
与c 语言一样, 在网络编程中, go语言同样需要进行序列化与反序列化 在c语言中, 通常需要一块内存缓冲区用来收 发数据.缓冲区一般定义成char *buff类型. 当需要发送 数据时, 直接使用m ...
- 超越 JSON: Spearal 序列化协议简介
Spearal 是一个新的开源的序列化协议,这个协议旨在初步替换JSON 将HTML和移动应用连接到Java的后端. Spearal的主要目的是提供一个序列协议,这个协议即使是在端点间传输的复杂的 ...
- Objective-C NSData与实现NSCoding协议进行序列化和反序列化
1.NSData NSData是Objective-C语言中数据的基本类型,其成分可以理解为字节指针和长度的封装的类,来看看源代码 @interface NSData : NSObject <N ...
- php 序列化(serialize)格式详解
1.前言 PHP (从 PHP 3.05 开始)为保存对象提供了一组序列化和反序列化的函数:serialize.unserialize.不过在 PHP 手册中对这两个函数的说明仅限于如何使用,而对序列 ...
- Strom序列化机制
Storm 中的 tuple可以包含任何类型的对象.由于Storm 是一个分布式系统,所以在不同的任务之间传递消息时Storm必须知道怎样序列化.反序列化消息对象. Storm 使用 Kryo库对对象 ...
- Pythoy 数据类型序列化——json&pickle 模块
Pythoy 数据类型序列化--json&pickle 模块 TOC 什么是序列化/反序列化 pickle 模块 json 模块 对比json和pickle json.tool 命令行接口 什 ...
- javascript对象序列化(对象与JSON字符串的互换)
前一段时间用到h5的本地存储---需要把某个js对象存储在浏览器的本地存储中,用到了javascript对象的序列化与反序列化 所谓的序列化就是将对象的状态信息转换为可以存储或传输的形式的过程,基本上 ...
- Golang语言下使用Protocol Buffer教程
代码仓库地址 一.介绍 Protobuf是Google旗下的一款平台无关,语言无关,可扩展的序列化结构数据格式.所以很适合用做数据存储和作为不同应用,不同语言之间相互通信的数据交换格式,只要实现相同的 ...
随机推荐
- python进阶(17)偏函数partial
什么是偏函数partial python中提供一种对于函数固定属性的函数 偏函数的作用 把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数 偏函数的语法 使用偏函数必须先导入from ...
- 【接口参数解析BUG】SpringMVC接口参数解析
今天遇到一个BUG,前端传递数字数组时,后端使用字符串类型去接收,结果无法接收到,代码如下 问题: GET请求: 前端: configJsonArray:[1,2] 后端: private Strin ...
- POJ3757 01分数规划
题意: 有一个任务,给你提供n太服务器,让你在这n太服务器中选出k台完成这个任务,要求是每台服务器的工作时间相同,总的花费最小. 思路: 题目中给出对于每台服务器有这个式子: To ...
- Python脚本破解Linux口令(crypt模块)
环境 Kali Linux ,python版本2.7.13 . 我们利用Linux系统中的 crypt 模块模拟了Linux系统中用户密码的加密,在Windows中是不存在这个库的. 在Linux系统 ...
- 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置
目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...
- [LeetCode每日一题]153.寻找旋转排序数组中的最小值
[LeetCode每日一题]153.寻找旋转排序数组中的最小值 问题 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组 nums = [0,1, ...
- Vue3能不能用到生产环境?
最近,有不少朋友问我:"十三,看你写了几个Vue3的项目,你觉得Vue3能用到生产环境了吗?"结合自己的想法和尤大直播说的话,给一点建议. 别问我!没结果,除非花手摇过我. 我不是 ...
- 2019c#将PDF转图片
两种方法: 第一种是用O2S.Components.PDFRender4NET 大家可以去网上查找无水印版本 但是有的时候带颜色的字就变空白了 不知道为什么 第二种是用PdfiumViewer 这种方 ...
- SpringBoot中获取上下文
在实际开发中,有时候会根据某个bean的名称或class到Spring容器中获取对应的Bean.这里只做个简单的记录,方便后续自查. @Component public class SpringCon ...
- Nacos C++客户端开发文章
前段时间关注了下阿里巴巴发起的开源项目Nacos,这是一个注册.配置中心(Naming And Config),支持各种语言的客户端,但是唯独没有C++的,考虑到以前做过一段时间的C++程序员,不禁一 ...