请在提交问题之前回答以下问题。谢谢!
您正在使用哪个版本的Go(go version
)?
Go Playground
这个问题是否在最新版本中重现?
是的
您正在使用什么操作系统和处理器架构(go env
)?
Go Playground
您做了什么?
https://play.golang.org/p/QM3FKwmR9h1
您期望看到什么?
{john}
{smith}
您实际看到了什么?
{john }
{john smith}
简而言之...
Unmarshal文档表示:
Unmarshal解析JSON编码的数据,并将结果存储在v指向的值中。
~ https://golang.org/pkg/encoding/json/#Unmarshal
我原以为在Unmarshal返回后,结构体会完全匹配提供的JSON。这让我感到非常惊讶,我认为文档应该明确提到“不在JSON文档中的字段将保留其原始值。”
现有的功能确实通过让Unmarshal仅更新存在于JSON文档中的字段,为设置默认值提供了一种优雅的方法。我不否认这很有用。然而,我仍然希望看到文档明确提及这种行为。
3条答案
按热度按时间gblwokeq1#
https://golang.org/cl/148834提到了这个问题:
encoding/json: document the unmarshalling of missing json fields
cld4siwp2#
https://golang.org/cl/221117提到了这个问题:
encoding/json: clarify how we decode into structs
7gcisfzg3#
第一个CL在上轮审查后还没有更新,我也正在处理一个相关的文档问题,所以我发送了自己的CL。