在 Go 中解组嵌入式结构
本文解决了将 JSON 数据解组到包含嵌入式结构的结构的问题。提供的示例中,Inner 结构嵌入到 Outer 结构中,演示了调用 Inner 的默认 UnmarshalJSON 方法,并且仅填充 Data 字段,而将 Outer 的 Num 字段留空。
原因因为这种行为在于 Go 的嵌入式结构机制。当嵌入式结构体被解组时,解组过程直接针对嵌入式结构体并忽略外部结构体的字段。
为了解决这个问题,提出了一个更简单、更高效的解决方案:使内部结构体成为显式字段在 Outer 结构中。
通过显式声明 Inner 作为字段,可以使用整个 JSON 数据调用 Outer 结构的 UnmarshalJSON 方法。在此方法中,可以使用嵌入的 Inner 结构体的 UnmarshalJSON 方法填充 Inner 的 Data 字段,而可以单独填充 Num 字段。这种方法确保在解组期间正确填充外部结构的两个字段。
这是一个说明解决方案的工作示例:
<code class="go">type Outer struct { I Inner // Inner as explicit field Num int `json:"Num"` }</code>
以上是如何解组 Go 中的嵌入式结构?的详细内容。更多信息请关注PHP中文网其他相关文章!