【发布时间】:2015-12-01 16:19:47
【问题描述】:
请看下文。
https://play.golang.org/p/HXrqLqYIgz
我的期望值为:
{"Byte2":0,"Name":"bob"}
但实际:
{"ByteArray":[0,0,0,0],"Byte2":0,"Name":"bob"}
根据文档(https://golang.org/pkg/encoding/json/)
空值是 false、0、任何 nil 指针或接口值,以及任何长度为零的数组、切片、映射或字符串。
因此,json.Marshall() 忽略了 omitempty-tag,因为 [0 0 0 0] 既不是零长度也不是 0 也不是 nil。
现在,要获得期望值,我们应该怎么做?
【问题讨论】:
-
它不能省略字节数组:它是一个值类型,并且总是存在它的默认值。