揭开 Go 解组中 Void 值和未指定字段的神秘面纱
在 Go 中,将 JSON 解组为结构体时,可能具有挑战性区分空值和未指定的字段值。这可能会导致不明确的程序行为。以下是解决此难题的方法:
区分 Void 和未指定值
当 JSON 字段存在但具有空值(例如,空字符串)时,会出现 Void 值),而当 JSON 中完全省略某个字段时,就会出现未指定的值。为了区分这些,修改字段类型以使用指针:
type Category struct { Name string Description *string }
现在,如果 JSON 字段包含空字符串,它将被设置为指向空字符串的指针。但是,如果该字段不存在,它将保持为零。
示例用法
考虑以下 JSON:
[ {"Name": "A", "Description": "Monotremata"}, {"Name": "B"}, {"Name": "C", "Description": ""} ]
使用修改后的字段类型,输出将为:
[{Name:A Description:0x1050c150}, {Name:B Description:<nil>}, {Name:C Description:0x1050c158}]
这允许您区分类别 B 中未指定的描述字段和类别 C 中的空描述字段。您现在可以在程序中单独处理它们。
以上是在 Go 中解组时如何区分空 JSON 字段和缺失 JSON 字段?的详细内容。更多信息请关注PHP中文网其他相关文章!