笔者之前有写过关于 xml 的使用文章,今天来给大家介绍关于数据序列化和反序列化的一种常见方式 JSON. 尤其是在 http,rpc 的微服务调用中。

基础语法

在 Go 中我们主要使用官方的 encoding/json 包对 json 数据进行序列化和反序列化,主要使用方法有:

  • 序列化:
  • 反序列化:

简单的例子

当我们运行代码的时候可以得到如下输出结果:

在这个列子中,我们使用 unmarshalmarshal 将一个整数的 JSON 二进制转化为 go int 数据

注意:在实际应用中,我们在序列化和反序列化的时候,需要检查函数返回的 err,如果 err 不为空,表示数据转化失败。

例如:我们把上面例子中 value 类型由 int 修改为 string 后再次运行代码,你将得到 unmarshal error is:json:cannot unmarshal number into Go value of type string的错误提醒。

数据对应关系

JSON 和 Go 数据类型对照表

例如:

运行代码我们可以得到如下输出结果

自定义数据类型

除了使用上面基础数据外,对于那些比较复杂的数据集合(Object),我们还可以使用自定义数据类型 struct 来转化。

Go 中关于 JSON 转化字段名的对应语法为:

如果我们想忽略那些空值的字段,我们可以使用 omitempty 选项:

如果我们想忽略特定字段:

组合示例

实战练习

假如我们有这一样一段 JSON 数据,它表示一个学生的考试成绩,下面我们就来看看在 Go 中如何序列化和反序列化。

数据准备

反序列化

运行代码输出结果为:

序列化

当我们运行代码后,打开 data2.json 文件。将看到如下内容:

Python 运维开发——18天训练营

本课程为:网络班+面授班(北京)

第一:¥1299 仅剩2天

第二:开课时间 5月12日

第三:为期18天(每周一天)

主讲师:

Panda :曾就职于豆瓣,某互联网医疗企业运维负责人

Monkey :曾就职爱奇艺,某在线教育独角兽企业运维研发负责人

训练大纲

Day1-Day4 Python 基础

● 基础语法 + 数据类型+文件处理

Day5-Day6 Python 进阶

● 函数式编程 + 面向对象 + 多线程

Day7-Day10 Django Web 开发入门

● Django MTV + Django Admin + Bootstrap/jQuery

Day11-Day18 项目实战

● 用户权限管理系统+ 多云管理 CMDB 系统 + 运维工单系统 + 代码发布系统

报名方式

添加小助手WeChat:17812796384,回复【18天训练营】

Golang 课程5月开课,想要学习的小伙伴抓紧时间,早报名享受早鸟价

json序列化_JSON 序列化和反序列化 In Go相关推荐

  1. java 对象转json 某属性不序列化_json序列化时排除指定属性

    上一篇博客讲了,当对象属性为空时,让它返回空字符串的问题.但这也引出另一个问题,那就是如果一个对象拥有很多属性,而且这些属性都为空,那样还是会把每个属性都返回,这些会加大不必要的传输流量.要解决这个问 ...

  2. 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性...

    使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值. 解决办法是在web.config增加如下节点到& ...

  3. C#开发笔记之19-如何用C#实现优雅的Json解析(序列化/反序列化)方案?

    本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#开发笔记之19-如何用C#实现优雅的Json解析(序列化/反序列化)方案? | .Net中文网. C#开发笔记概述 另外可参考文章 ...

  4. json,pickle,shelve序列化和反序列化

    1.简介 ●  json:用于字符串 和 python简单数据类型(list,dict...)间进行转换:字符串<--->python简单数据类型 ●  pickle:用于python特有 ...

  5. Json和其序列化和反序列化

    最近经常在说Json传值,Json序列化,什么是Json?什么又是Json的序列化和反序列化? 什么是 JSON ? 大家是否知道Json的全称?-JavaScript Object Notation ...

  6. Json数据的序列化与反序列化的三种常用方法介绍

    以下内容是本作者从官网中看相应的教程后所做的demo,其体现了作者对相关知识点的个人理解..作者才疏学浅,难免会有理解不到位的地方..还请各位读者批判性对待...       本文主要介绍在Json数 ...

  7. python json dumps 自定义_Python json.dumps 自定义序列化操作

    def login_ajax(request): if request.method == "GET": return render(request, 'login_ajax.ht ...

  8. 使用Json.NET来序列化所需的数据

    我们在做开发的时候,很多时候需要和Json数据格式打交道,如Web开发里面,很多时候,数据通过Json进行传递到页面上,然后在进行处理的.而使用Json的时候,我们很多时候会涉及到几个序列化对象的使用 ...

  9. baseresponse响应类_内部类、响应类Response、序列化基类、反序列化、全局局部钩子...

    一.内部类 1.概念:将类定义在一个类的内部,被定义的类就是内部类 2.特点:内部类及内部类的所以名称空间,可以直接被外部类访问的 3. 应用:通过内部类的名称空间,给外部类额外拓展一些特殊的属性(配 ...

  10. 使用Json.net进行序列化时,如何更改属性名称?

    本文翻译自:How can I change property names when serializing with Json.net? I have some data in a C# DataS ...

最新文章

  1. DARPA:我们需要一种新型的芯片技术来确保人工智能的长足发展
  2. 笔记 - Ali cloud ESC 简介
  3. MySQL--数据库基础
  4. 《京东618实践:一元抢宝系统的数据库架构优化》阅读笔记
  5. 怎么画单极交流放大电路波形图_区别在哪?:VCC、VDD、VEE、VSS、数字地、模拟地、信号地、交流地、直流地!...
  6. 计算机图形学考题答案,计算机图形学考题答案.doc
  7. div和span标签(HTML)
  8. 对于C语言可移植性的思考
  9. SFTP服务的使用!!
  10. A simple brute force problem.
  11. 模拟计算机用英语怎么说,电脑里的 属性 英语怎么说
  12. ps怎么做出针式打印机打印效果字体?
  13. 零基础必看的Html5+Css3+移动端前端教程(四)
  14. arcgis重心迁移分析_ArcGIS支持下三峡库区适度人口重心迁移研究
  15. JavaScript Lodash 工具库
  16. Tiled瓦片地图的使用
  17. 啊,CET6 2021年
  18. 记忆化搜索 day48
  19. c++ pair 加减运算符重载
  20. 2022 新年送祝福微信小程序 带流量主

热门文章

  1. jdk8 lambda表达式
  2. 分治法解决最大子数组问题【 转载】
  3. spring mvc mvc:default-servlet-handler / 。
  4. Linux在出现/java: cannot execute binary file
  5. 关于TcpClient,Socket连接超时的几种处理方法
  6. SVN missing 解决
  7. 解决表格里面使用text-overflow后依旧不能隐藏超出的文本
  8. ExtJS2.0.1 ColumnTree控件使用心得
  9. 数据同步的设想-数据解耦
  10. python的类与继承