目录

文章目录

  • 目录
  • encoding/json
    • 使用 json.Marshal() 函数对一组数据进行 JSON 格式的编码
    • 使用 json.Unmarshal() 函数对 JSON 数据进行解码

encoding/json

Golang 提供了的标准库 encoding/json 对 JSON 数据进行编解码,并且允许使用 map[string]interface{}[]interface{} 类型的值来分别存放未知结构的 JSON 对象或数组。

使用 json.Marshal() 函数对一组数据进行 JSON 格式的编码

func Marshal(v interface{}) ([]byte, error)

示例:

type Book struct { Title stringAuthors []string Publisher string IsPublished bool Price float
}gobook := Book{"Go 语言编程",["XuShiwei", "HughLv", "Pandaman", "GuaguaSong", "HanTuo", "BertYuan", "XuDaoli"],"xxx.com.cn",true,9.99
}b, err := json.Marshal(gobook)b == []byte(`{"Title": "Go语言编程","Authors": ["XuShiwei", "HughLv", "Pandaman", "GuaguaSong", "HanTuo", "BertYuan", "XuDaoli"],"Publisher": "xxx.com.cn","IsPublished": true,"Price": 9.99
}`)

编码时的数据类型映射如下:

  • 布尔值:转化为 JSON 后还是布尔类型。
  • 浮点数和整型:转化为 JSON 里边的常规数字。
  • 字符串:以 UTF-8 编码转化输出为 Unicode 字符集的字符串,特殊字符比如 “<” 将会被转义为 \u003c。
  • 数组和切片:转化为 JSON 里边的数组,但 []byte 类型的值将会被转化为 Base64 编码后的字符串,Slice 类型的零值会被转化为 null。
  • 结构体:转化为 JSON 对象,并且只有结构体里边以大写字母开头的可被导出的字段才会被转化输出,而这些可导出的字段会作为 JSON 对象的字符串索引。

注意,转化一个 Map 类型的数据结构时,该数据的类型必须是 map[string]T(T 可以是 encoding/json 包支持的任意数据类型)。

使用 json.Unmarshal() 函数对 JSON 数据进行解码

func Unmarshal(data []byte, v interface{}) error

解码时的数据类型映射

  • JSON 中的布尔值:转换为 Go 中的 Bool 类型。
  • JSON 中的数值:转换为 Go 中的 Float64 类型。
  • JSON 中的字符串:转换为 Go 中的 String 类型。
  • JSON 中的数组:转换为 Go 中的 []interface{} 类型。
  • JSON 中的对象(Object):转换为 Go 中的 map[string]interface{} 类型。
  • JSON 中的 null 值:转换为 Go 中的 nil。

Go 语言编程 — encoding/json 库相关推荐

  1. c语言编程入门题库,级程序设计基础题库(c语言)(..更新).doc

    级程序设计基础题库(c语言)(..更新).doc 14级<程序设计基?础>题库100?道 1.总共抽10?道题,按题型:顺序(1道).分支(1道).单循环(2道).多循环(1道).数组(1 ...

  2. 计算机c语言二级编程题题库,计算机等级考试二级c语言编程题题库

    1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中. 答案: int fun(int sco ...

  3. 开源 C++ JSON 库 sonic-cpp解析性能为 rapidjson 的 2.5 倍

    sonic-cpp 是由字节跳动 STE 团队和服务框架团队共同研发的一款面向 C++ 语言的高效 JSON 库,极致地利用当前 CPU 硬件特性与向量化编程,大幅提高了序列化反序列化性能,解析性能为 ...

  4. 【YAML】YAML语言|YAML配置文件|YAML库用法|相比json的区别优势

    目录 YAML简介 官方定义 我的理解 基本的语法结构 1. 当数据类型是字面量 2.当数据类型是对象.键值对的集合 3.当数据类型是数组.一组按次序排列的值 YAML库编译与使用 库的下载与编译安装 ...

  5. Go语言学习之encoding/json包

    json  json大家都不陌生:  JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript 规范的一个子集,采用 ...

  6. c语言 json 请求_JSON的简单介绍以及C语言的JSON库使用

    JSON概述 JSON: JavaScript 对象表示法( JavaScript Object Notation) .是一种轻量级的数据交换格式. 它基于ECMAScript的一个子集. JSON采 ...

  7. JSON的简单介绍以及C语言的JSON库使用

    本文转自:https://www.cnblogs.com/liunianshiwei/p/6087596.html JSON概述 JSON: JavaScript 对象表示法( JavaScript ...

  8. Unix下设计动态库的方法《精通Unix下C语言编程与项目实践》(一)

    精通Unix下C语言编程与项目实践 之动态库的生成 作者:朱云翔,胡平 3.3 动态库的生成 动态库的生成可分为三个步骤,设计库源码.编译位置无关码(PIC)型.o文件和链接动态库.链接动态库的命令包 ...

  9. 二级c语言编程题只要得出答案,计算机二级C语言考试编程题题库答案.docx

    计算机二级C语言考试编程题题库答案 1.求100之内自然数中最大的能被17整除的数.void main(){ int i;for(i=100;i>0;i--)if(i%17==0)break;p ...

最新文章

  1. 一文读懂约瑟夫环算法
  2. LED,硅光电池的光能-电能转换是可逆的吗?
  3. 三、CSS重要的盒子模型知识总结(中篇)
  4. Android---自定义Toast
  5. 基于HTML5 的人脸识别活体认证
  6. vs2010中MEX文件建立与调试
  7. 使用Python Seaborn和Pandas进行数据可视化
  8. mine 规范_模型规范要求
  9. 快到期的域名如何防止被抢注?
  10. 【李小丫的笔记】DataWhale金融风控预测Task1
  11. linux0.11 阅读笔记
  12. 英语二 - 常用词根二
  13. 朋友圈评论发html,微信评论怎么发图片(微信朋友圈评论可以发表情包啦)
  14. 对互联网VC的10点看法
  15. MySQL——使用mysqldump命令备份
  16. 面试六要点_家庭办公室设置要点:改善空间的6条原则
  17. Tomcat启动时遇到的问题(找不到网页)
  18. 谱图理论(Spectral and Algebraic Graph Theory)| Chapter1: Introduction
  19. 如何在AXI和AXI4-Stream的Master和Slave间插入一级pipeline
  20. MovieMator Video Editor Pro for Mac(专业视频编辑软件) v2.5.4中文激活版

热门文章

  1. 2021易烊千玺高考成绩查询,易烊千玺高考分数公布?最骄傲的是他?网友:分太低!...
  2. Mysql 修改 复杂的汇总_MySQL数据分析:复杂查询
  3. 虚拟机 pxe服务器,配置PXE安装ESXi主机
  4. linux poll in,Linux poll机制详细讲解
  5. 为啥看恐怖片老是忘不掉?最新研究:恐惧记忆的形成方式更利于稳定存储
  6. 刚评上院士的马斯克就飘了,说要每天发射三次大火箭,向火星转移100万吨物资...
  7. AI学高数达到MIT本科水平,学了微积分线性代数概率论等6门课,不光能做题还能出题...
  8. 前微软副总裁姚麒回归小冰,任首席技术官
  9. 1个人70万行代码,20年持续更新,这款游戏号称开发到死,永不停更
  10. 最新全球权威AI基准测试榜单:浪潮和NVIDIA霸榜了