Golang —— JSON的解析与生成

JSON (JavaScript Object Notation)是一种比XML更轻量级的数据交换格式,在易于人们阅读和编写的同时,也易于程序解析和生成。尽管JSON是JavaScript的一个子集,但JSON采用完全独立于编程语言的文本格式,且表现为键/值对集合的文本描述形式(类似一些编程语言中的字典结构),这使它成为较为理想的、跨平台、跨语言的数据交换语言。

例如:

{
   
	"Company": "itcast",
	"Subjects": [
	 "Go",
	 "C++",
	 "Python",
	 "Test"
	],
	"IsOk": true,
	"Price": 666.666
	}

开发者可以用 JSON 传输简单的字符串、数字、布尔值,也可以传输一个数组,或者一个更复杂的复合结构。在 Web 开发领域中, JSON被广泛应用于 Web 服务端程序和客户端之间的数据通信。

Go语言内建对JSON的支持。使用Go语言内置的encoding/json 标准库,开发者可以轻松使用Go程序生成和解析JSON格式的数据。主要就是运用json.MarshalIndent(m, "", " ")json.Unmarshal([]byte(jsonBuf), &tmp)进行json的生成和解析

JSON官方网站
JSON在线格式化

对于struct tag

我们看到上面的输出字段名的首字母都是大写的,如果你想用小写的首字母怎么办呢?把结构体的字段名改成首字母小写的?JSON输出的时候必须注意,只有导出的字段(首字母是大写)才会被输出,如果修改字段名,那么就会发现什么都不会输出,所以必须通过struct tag定义来实现。

针对JSON的输出,我们在定义struct tag的时候需要注意的几点是:

  • 字段的tag是"-",那么这个字段不会输出到JSON
  • tag中带有自定义名称,那么这个自定义名称会出现在JSON的字段名中
  • tag中如果带有"omitempty"选项,那么如果该字段值为空,就不会输出到JSON串中
  • 如果字段类型是bool, string, int, int64等,而tag中带有",string"选项,那么这个字段在输出到JSON的时候会把该字段对应的值转换成JSON字符串
type IT struct {
   
	// 成员变量名首字母必须大写
	Company string
	Subjects []string
	IsOk bool
	Price float64
}

// 如果要对成员变量进行大小写等的修改,不能直接进行修改,而是要进行二次编码
type IT struct {
   
	Company string 		`json:"-"` // - 表示该行不会输出到屏幕上
	Subjects []string 	`json:"Subjects"` // 这样就会把Subjects编程小写subjects了
	IsOk bool			`json:",string"` // 将变量变成字符串的形式输出,注意,和string之间不能有空格
	Price float64		`json:",string"` // 将变量变成字符串的形式输出,注意,和string之间不能有空格
}

JSON的生成

1. 通过结构体生成json
type IT struct {
   
	// 成员变量名首字母必须大写
	Company string		
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值