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. java面试一日一题:讲下mysql中的undolog

    问题:请讲下mysql中undo log的作用 分析:mysql中有很多日志,例,bin log undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题: ...

  2. leveldb的搜索

    参考: http://taobaofed.org/blog/2017/07/05/leveldb-analysis/ 和leveldb源码(block.cc的Seek函数). leveldb的key. ...

  3. 淘宝欺骗病毒的鉴定--TaBAccelerate.dll

    样本名称:TaBAccelerate.dll 样本大小:1135104 字节 样本MD5:7AEF6EEECB37685D17F3D9BD76FA9EA0 样本SHA1: EB1E5ABA7C3797 ...

  4. 【转】在CentOS 8 / RHEL 8上配置主/从BIND DNS服务器

    转自: https://zh.codepre.com/centos-2700.html 前言 本指南描述了在CentOS 8 / RHEL 8 Linux上配置BIND DNS服务器所需的步骤.在Ce ...

  5. hdu1305 字典树水题

    题意:      给你一些字符串,然后问你他们中有没有一个串是另一个串的前缀. 思路:       字典树水题,(这种水题如果数据不大(这个题目不知道大不大,题目没说估计不大),hash下也行,把每个 ...

  6. XML和JSON数据格式

    目录 XML DTD(文档类型定义) DTD实体 JSON 使用python解析JSON数据 XML和JSON的区别 XML的优缺点 JSON的优缺点 XML和JSON都是web存储和传输过程中数据的 ...

  7. NumPy之:使用genfromtxt导入数据

    目录 简介 genfromtxt介绍 多维数组 autostrip comments 跳过行和选择列 简介 在做科学计算的时候,我们需要从外部加载数据,今天给大家介绍一下NumPy中非常有用的一个方法 ...

  8. 栈(Stack) --- C# 自定义和微软官方的区别

    最近在学习算法基础,本篇文章作为一个记录,也算是一次实践和总结.(顺便也深入C#运行时学习一下) 目录 1. 栈是什么 2. Stack 自定义实现 3. Stack C#官方实现 4. 区别 5. ...

  9. JDBC往数据库里插入数据

    首先还是一个工具类 插入数据

  10. window 下如何安装redis

    1.官方没有 Windows版本的 Redis,但是微软开发并维护了针对Win64的Windows版本. Windows版本下载地址:https://github.com/MicrosoftArchi ...