在 Go 解组中区分 Void 值和未指定字段
在 Golang 中解组 JSON 数据可能很简单,但要区分 void 值和未指定字段价值观可能是一个挑战。本文解决了这个问题,提供了区分两者的解决方案。
在提供的示例中,我们有一个 Category 结构体切片,其中每个类别都有一个 Name 和 Description 字段。将 JSON 数据解组到此切片时,我们遇到类别 B 和类别 C 都有空的描述字段的情况。然而,我们想知道是否有一种方法可以辨别类别 B 的描述是否被指定为空字符串或根本不存在于 JSON 数据中。
关键是将描述字段声明为指向string:
type Category struct { Name string Description *string }
通过使用指针,如果 JSON 字段存在空字符串值,它将被设置为指向空字符串的指针 (*"")。相反,如果 JSON 中不存在该字段,则指针将保留为 nil (
更新的输出例证了这种区别:
[{Name:A Description:0x1050c150} {Name:B Description:<nil>} {Name:C Description:0x1050c158}]
这里,类别 A 的Description非空,类别B的Description为nil(表示未指定字段),类别C的Description为空字符串(表示指定的空值)。
此技术允许您区分空值(nil)和未指定的字段(nil 指针),从而使您能够相应地定制程序的行为。
以上是在 Go 中解组 JSON 时如何区分空字段和缺失字段?的详细内容。更多信息请关注PHP中文网其他相关文章!