页首Html代码

返回顶部

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结果.

posted @ 2024-06-19 15:56  ayanmw  阅读(19)  评论(0编辑  收藏  举报

页脚Html代码