Home Articles

Golang unmarshal忽略空字段

Asked
Viewed 422 times
3

我在成功提交用户详细信息时从客户端获得了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 Answer

  • 9

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

    但是,如果将其转换回json,它将省略nil字段 .

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

Related