在 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中文网其他相关文章!