【发布时间】:2014-09-27 13:21:07
【问题描述】:
成功提交用户详细信息后,我从客户端获得了 JSON。
可以跳过 JSON 中的某些元素,因为它们没有更新。
在 Go 服务器端,我定义了一个等效结构。
服务器成功地将 JSON 字节编组到结构中。
type user struct {
Id *int64 `json:",omitempty"`
Name *string `json:",omitempty"`
Age *int64 `json:",omitempty"`
}
但是对于没有从客户端接收到的字段,默认情况下 unmarshal 硬编码 nil 为字符串,空数组为字符串数组。
例如,如果我得到 json { "Id" : 64, "Name" : "Ryan" },
我不希望 unmarshal 将其转换为 {"Id" : some hexadecimal, "Name" : some hexadecimal, "Age" : nil}。
为了简单起见,我希望它是{"Id" : some hexadecimal, "Name" : some hexadecimal }
我怎样才能完全忽略该字段并映射我得到的东西?
Goplayground 代码:http://play.golang.org/p/3dZq0nf68R
【问题讨论】:
-
我不明白这个问题。如果您在该字段中得到 nil,则表示 json 没有它的值,并且 unmarshall 会将其设置为该字段类型的默认“零”值。
-
如果 json 字段没有值,我不想要设置 nil 的功能。如果该字段不存在,我希望它完全忽略该字段,换句话说,json 仅包含具有值的字段。
-
我对 goLang 还是很陌生,只是想看看是否有这样的功能。我不明白这里有什么困惑。
-
@Pals:你终于得到答案了吗?您已标记答案的是 Marshal,但您提出了解组的问题。
标签: go unmarshalling