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. 033- while循环语句

    语法 初始化语句; while(boolean表达式) { 循环体语句; 控制条件语句; } 执行过程: 只要boolean表达式里面的结果是true,就会执行while大括号里面的语句,直到bool ...

  2. wordpress 自定义路由及展示页

    wordpress 自定义路由及展示页 注册domain/test这个路由 wordpress 有重写url的方法,叫 add_rewrite_rule().在function.php中加入如下代码段 ...

  3. 去css 冗余方法

    1.float在某种意义上而言与display:inline-block属性的作用是一模一样的, 所以类似于display:block; float:left; 就是说.float:left 可以让行 ...

  4. hdu4585 STL水题

    题意:       成立少林寺,刚开始有一个大师,id是1,攻击力是10E,现在陆续来人,每个人有自己的id,和自己的攻击力,但是每一个新来的要和之前的和尚pk,他必须选择和他攻击力差值最小的那个,如 ...

  5. poj2987最大权闭包(输出最少建塔个数)

    题意:      公司要裁员,每个员工被裁掉之后都会有一定的收益(正或者负),有一些员工之间有限制关系,就是裁掉谁之前必须要先裁掉另一个人,问公司的最大收益和最大收益前提下的最小裁员人数? 思路:   ...

  6. 2021最新Java面试题全集-20210326版

    在手撕了数千道网络流传的面试题,外加十多个不眠之夜, 终于从里面精心挑选出约500道题目, 做为大家求职.跳槽前复习准备面试使用. 一:挑选题目的原则: 常考的.常被面试问到的 题目有一定的深度和难度 ...

  7. Java安全之FastJson JdbcRowSetImpl 链分析

    Java安全之FastJson JdbcRowSetImpl 链分析 0x00 前言 续上文的Fastjson TemplatesImpl链分析,接着来学习JdbcRowSetImpl 利用链,Jdb ...

  8. 3D深色金属哥特3D项目工具小图标icon高清设计素材

    3D深色金属哥特3D项目工具小图标icon高清设计素材

  9. 在C++中调用Python

    技术背景 虽然现在Python编程语言十分的火爆,但是实际上非要用一门语言去完成所有的任务,并不是说不可以,而是不合适.在一些特定的.对于性能要求比较高的场景,还是需要用到传统的C++来进行编程的.但 ...

  10. CSS3过渡应用

    小米图标转换 transition:需要过渡的属性 花费时间 (运动曲线 何时开始): Tips: 1.第二个属性值必须跟上单位(s) 2.谁要过渡给谁加 图标转换最终效果:当鼠标划过图标时,缓慢转换 ...