首页 > 后端开发 > Golang > 正文

为什么在 Go 中将 JSON 解组到嵌入结构时我的'Num”字段被忽略?

Susan Sarandon
发布: 2024-11-04 15:03:42
原创
245 人浏览过

Why is my `Num` field ignored when unmarshalling JSON to an embedded struct in Go?

在 Go 中将 JSON 解组为嵌入式结构

将 JSON 数据反序列化为嵌入式结构可能会给 Golang 带来挑战。以结构体为例:

<code class="go">type Outer struct {
    Inner
    Num int
}

type Inner struct {
    Data string
}</code>
登录后复制

使用 json.Unmarshal(data, &Outer{}) 时,仅对 Inner 字段进行解组,忽略 Num 字段。要理解为什么会发生这种情况,请务必注意 Inner 嵌入在 Outer 中。

在 JSON 解组期间,库调用 Outer 上的解组器,Outer 又调用 Inner 上的解组器。因此,Inner.UnmarshalJSON 函数接收整个 JSON 字符串,并单独为 Inner 处理该字符串。

要解决此问题,请将 Inner 设为 Outer 中的显式字段。这确保了在 JSON 解组期间,正确解组 Inner 字段,并根据 JSON 数据设置 Num 字段:

<code class="go">Outer struct {
    I Inner // Make Inner an explicit field
    Num int `json:"Num"`
}</code>
登录后复制

此修改可以将 JSON 数据正确解组到 Outer 结构中,包括内部字段和数字字段。

以上是为什么在 Go 中将 JSON 解组到嵌入结构时我的'Num”字段被忽略?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板