JSON

Golang中的JSON处理技巧

字号+ 作者:H5之家 来源:H5之家 2017-08-18 17:02 我要评论( )

Kael Li, kael, kael li, lilinjian, go, golang, struct, nil pointer,

July 18th, 2017

又好久没有更新博客了,最近因为项目需要学习了下Go语言,才真正明白了为什么说PHP是世界上最好的语言。言归正传,首先先推荐本秘籍 build-web-application-with-golangGithub上的高星项目,作者同时也是beego框架的开发者,本项目是作者使用Go进行Web开发的经验总结,满满的干货。

所以基础的JSON处理就直接参考文档吧,主要内容大概是Go中有专门的JSON包来处理JSON数据,通过定义对应的struct,tag映射字段,很方便的可以把JSON数据转成struct,或者把struct转化成JSON字符串。

其中文档中有段描述是这样的:

tag中如果带有”omitempty”选项,那么如果该字段值为空,就不会输出到JSON串中 这其实是一个比较常见的需求,当某个字段为空时,我们不希望该字段也输出在JSON字符串中,通过在结构体的tag中定义omitempty就可以达到该目的

但是在实际的应用过程中,我却遇到了如下问题:

type DataAttachment struct { Id string `json:"id,omitempty"` Head DataAttachmentHead `json:"head,omitempty"` Body DataAttachmentBody `json:"body,omitempty"` } type DataAttachmentHead struct { Text string `json:"text,omitempty"` Bgcolor string `json:"bgcolor,omitempty"` Tcolor string `json:"tcolor,omitempty"` } type DataAttachmentBody struct { Title string `json:"title,omitempty"` Image string `json:"image,omitempty"` Content string `json:"content,omitempty"` }

以上DataAttachment这个结构,通过对head,body定义omitempty选项,我们预期是希望如果当head,body为空时,可以不输出这2个字段到JSON中。但是事实上却和我们预期的有所差异,我们通过json.Marshal得到的JSON中还是会有空的head和body。

所以我们要怎样才能实现我们的目的呢?其实很简单,传指针

type DataAttachment struct { Id string `json:"id,omitempty"` Head *DataAttachmentHead `json:"head,omitempty"` Body *DataAttachmentBody `json:"body,omitempty"` }

参考

  • Web (15)
  • Golang (1)
  • 分享到 Twitter Facebook Google+

    Kael Li, kael, kael li, lilinjian

    不乱于心,不困于情。不畏将来,不念过往。

  • ← 上一页
  • 下一页 →

     

  • 1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • javascript转义字符(\)对JSON.parse和eval的影响

      javascript转义字符(\)对JSON.parse和eval的影响

      2017-08-18 18:00

    • Golang 的 JSON 使用小技巧 码农头条

      Golang 的 JSON 使用小技巧 码农头条

      2017-08-18 18:00

    • json 数据转换

      json 数据转换

      2017-08-18 15:00

    • Golang中使用JSON的一些小技巧分享

      Golang中使用JSON的一些小技巧分享

      2017-08-18 14:11

    网友点评
    o