golang json库 忽略 omitempty
json库的obmitempty
介绍
众所周知,golang的json库 有个 omitempty的tag ,有了它,这个json序列化的时候,如果这个字段是零值,则会忽略此字段的序列化,导致json字符串中没有对应的字符串。
这对于某些人是困惑的,一般默认是没有 omitempty 这个tag的,但是。 但是来了,但是protobuf 生成的pb.go 里面带有的jsontag 就默认是有omitempty的。
比如:
type HelloReply struct {
Message string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"`
}
如果Message=="" 则在序列化以后,你只能看到一个{}
空对象。
如何在json序列化的时候 忽略omitempty,把零值全部序列化呢?
有个简单的办法,就是 你把 encoding/json的库复制一份到你的项目目录,然后把这个目录改名为 xxx/internal/jsonNoOmitempty ,然后 搜索这个裤子里面的omitempty
,把相关代码都注释掉,
后续使用jsonNoOmitempty.Marshal(xxx)
即可获得 忽略omitempty的json结果.
------------------------------------------------------------------------------------------------
一定要专业!本博客定位于 ,C语言,C++语言,Java语言,Android开发和少量的Web开发,之前是做Web开发的,其实就是ASP维护,发现EasyASP这个好框架,对前端后端数据库 都很感觉亲切啊。. linux,总之后台开发多一点。以后也愿意学习 cocos2d-x 游戏客户端的开发。