golang 操作json技巧总结(一)
需求
- 为了方便elasticsearch查询,需要将源数据的类型由string转成int
背景
- 源数据为json格式,需要变更类型的字段名为 sequence。
解决方案一
type media struct{ Sequence int `json:"sequence,string"` }
- 解析json时会自动将string类型的源数据转成int,不需要再使用strconv包转,非常方便。但是这样解析会有一个弊端。通常会使用 struct 来表示json数据,直接将json数据解析到对应的结构体就行。所以,如果需求仅仅是拉取源数据,存到本地。这个方案是OK的。但是一旦用这个结构体解析本地的数据时,这个字段因为与本地数据库的类型不符,无法拿到sequence字段对应的内容。如果没有别的方案,就只能定义两个结构体,A和B,之间只有一个字段不同。没有充分地复用代码!肯定不能这么干。所幸,还有解决方案2!
解决方案二
type media struct{ Sequence interface{} `json:"sequence"` }
- 把类型改成interface{} !完美解决源数据类型与目标数据类型不一样的问题!用strconv包转化成int,存储!
sequence,_:= strconv.Atoi(media.Sequence.(string)) media.Sequence=sequence
相关推荐
Lzs 2020-10-23
Justhavefun 2020-10-22
周游列国之仕子 2020-09-15
风雨断肠人 2020-09-04
聚合室 2020-11-16
零 2020-09-18
jacktangj 2020-10-14
ChaITSimpleLove 2020-10-06
Andrea0 2020-09-18
afanti 2020-09-16
88234852 2020-09-15
YClimb 2020-09-15
卖口粥湛蓝的天空 2020-09-15
stulen 2020-09-15
pythonxuexi 2020-09-06
abfdada 2020-08-26
梦的天空 2020-08-25