go :tag实现json字段转换

背景:
我们都知道go的struct中,如果字段需要对外使用,就需要使用首字母大写的格式,但是如果API中约定要使用小写字母开头呢?
比如:

type CbsVolume struct {

	// cbs id
	CbsDiskId *string 

	// fs类型
	FsType *string 

	// 是否只读
	ReadOnly *bool 
}

此时如果执行json.Marshal(),结构体会有三个字段CbsDiskId,FsType,ReadOnly,都是首字母大写的
如果我们要想使用小写的,可以借助tag实现

type CbsVolume struct {

	// cbs id
	CbsDiskId *string `json:"cbsDiskId,omitempty" name:"cbsDiskId"`

	// fs类型
	FsType *string `json:"fsType,omitempty" name:"fsType"`

	// 是否只读
	ReadOnly *bool `json:"readOnly,omitempty" name:"readOnly"`
}

此时转换出来的json中 三个字段首字母都是小写
一句话: go的 tag 可以帮你在零污染实体的前提下实现json的自定义
什么大小写转换,驼峰转化都是可以实现的
详细 的原理可以参考:
https://juejin.im/post/5b338516f265da596e4ceb9e

你可能感兴趣的:(go语言编程)