go encoding/json:澄清Unmarshal的合并语义

f0ofjuux  于 6个月前  发布在  Go
关注(0)|答案(3)|浏览(45)

请在提交问题之前回答以下问题。谢谢!

您正在使用哪个版本的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文档中的字段,为设置默认值提供了一种优雅的方法。我不否认这很有用。然而,我仍然希望看到文档明确提及这种行为。

gblwokeq

gblwokeq1#

https://golang.org/cl/148834提到了这个问题:encoding/json: document the unmarshalling of missing json fields

cld4siwp

cld4siwp2#

https://golang.org/cl/221117提到了这个问题:encoding/json: clarify how we decode into structs

7gcisfzg

7gcisfzg3#

第一个CL在上轮审查后还没有更新,我也正在处理一个相关的文档问题,所以我发送了自己的CL。

相关问题