本节紧接上节内容,介绍JSON处理和对文本的几种操作。
1
JSON处理
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,方便人们阅读和编写,也方便程序地解析和生成。虽然JSON是JavaScript的子集,但其格式完全独立于编程语言,表现为键/值对集合的文本描述形式(类似 Go 语言的字典结构),如图所示。由于它轻盈、生成这种格式的语言有较为完美的库,这使得它成为较为理想的、跨平台、跨语言的数据交换语言。
Go语言对JSON天然地支持。使用Go语言内置的encoding/json 标准库,开发者可以轻松使用Go程序生成和解析JSON格式的数据。
1.1 编码JSON
开发者可以用 JSON 传输简单的字符串、数字、布尔值,也可以传输一个数组,或者一个更复杂的复合结构,例如字典和结构体。本节就介绍通过结构体、map生成JSON。
1.1.1 通过结构体生成JSON
使用json.Marshal()函数或者json.MarshalIndent()函数可以对结构体类型数据进行JSON格式的编码。
json.Marshal()函数声明格式如下:
json.MarshalIndent()函数声明格式如下:
☛ 1.1.1.1 编码JSON
将结构体类型数据生成JSON格式数据,结构体成员变量名的首字母必须大写,否则无法解析。因为编码JSON的函数属于json包,如果结构体成员变量小写,就无法被外部包访问。
☛ 1.1.1.2 struct tag
将结构体类型数据生成JSON格式数据,结构体成员变量名的首字母必须大写。但如果要修改字段名,必须通过struct tag定义来实现。
针对JSON的输出,我们在定义struct tag的时候需要注意的几点是:
• 字段的tag是"-",那么这个字段不会输出到JSON;
• tag中带有自定义名称,那么这个自定义名称会出现在JSON的字段名中;
• tag中如果带有"omitempty"选项,如果该字段值为空,就不会输出到JSON中;
• 如果字段类型是bool, string, int, int64等,而tag中带有",string"选项,那么这个字段在输出到JSON的时候会把该字段对应的值转换成JSON字符串。
1.1.2 通过map生成JSON
1.2 解码JSON
可以使用json.Unmarshal()函数将JSON格式的文本解码为Go里面预期的数据结构。
json.Unmarshal()函数的原型如下:
该函数的第一个参数是输入,即JSON格式的文本(比特序列),第二个参数表示目标输出容器,用于存放解码后的值。第二个参数必须是指针,否则解析虽不报错,但数据无法赋值到目标输出容器中。
1.2.1 解析到结构体
1.2.2 解析到interface
2
文件的几种操作
2.1 文件的创建
os.Create()和os.NewFile()函数可以创建一个文件,其函数类型具体如下:
2.2 文件的打开
os.Open()和os.OpenFile()函数可以打开文件,其函数类型具体如下:
2.3 文件的信息写入
os.Write()、os.WriteAt()和os.WriteString()函数可以打开文件,其函数类型具体如下:
2.4 文件的信息读取
os.Read()和os.ReadAt()函数可以打开文件,其函数类型具体如下:
2.5 文件的删除
参考资料
[1] 许式伟,吕桂华.Go语言编程[M].北京:人民邮电出版社,2012:135-140.
[2] https://studygolang.com/pkgdoc
-END-
来源:链块学院
本文由布洛克专栏作者发布,代表作者观点,版权归作者所有,不代表布洛克科技观点
——TheEnd——
关注“布洛克科技”
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 区块链技术语言(十五):Go语言指针
- 区块链技术语言(十九):Go语言字典
- 区块链技术语言:Go语言选择语句 | 十
- 区块链基础语言(二十)——Go语言结构体
- 区块链技术语言(二十一)——Go语言包
- 区块链技术语言(二十六):Go语言字典
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web 2.0 Architectures
Duane Nickull、Dion Hinchcliffe、James Governor / O'Reilly / 2009 / USD 34.99
The "Web 2.0" phenomena has become more pervasive than ever before. It is impacting the very fabric of our society and presents opportunities for those with knowledge. The individuals who understand t......一起来看看 《Web 2.0 Architectures》 这本书的介绍吧!