golang 操作json技巧总结(一)

Mandelbrot_Kobe · · 2248 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

需求

  • 为了方便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

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:Mandelbrot_Kobe

查看原文:golang 操作json技巧总结(一)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2248 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传