揭開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中文網其他相關文章!