Golang unmarshal忽略空字段

时间:2014-08-05 00:02:14

标签: go unmarshalling

我从客户端获得了成功提交用户详细信息的JSON。

JSON中的某些元素可以跳过,因为它们没有更新。

在Golang服务器端,我定义了一个等效的结构。

服务器成功地将JSON字节封送到结构中。

type user struct {
    Id       *int64  `json:",omitempty"`
    Name     *string `json:",omitempty"`
    Age      *int64  `json:",omitempty"`
}

但对于未从客户端收到的字段,默认情况下解组为字符串的硬编码为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

感谢您的回复。

1 个答案:

答案 0 :(得分:11)

您有点困惑,fmt.Printf("%+v", animals)打印Go结构,它将始终打印出指定的所有字段。

但是,如果将其转换回json,则会省略nil字段。

检查http://play.golang.org/p/Q2M5oab2UX