在 JSON 解组中处理 Int64 字段的字符串输入
将 JSON 数据解组为 Go 值有时会遇到挑战,特别是在遇到以下字符串表示形式时积分值。本文探讨了在使用字符串编码的整数字段解组 JSON 数据时出现错误“json: 无法将字符串解组为 int64 类型的 Go 值”的解决方案。
问题陈述
考虑以下代表调查响应的 Go 结构:
type tySurvey struct { Id int64 `json:"id,omitempty"` Name string `json:"name,omitempty"` }
在此例如,id 字段定义为 int64。将 tySurvey 序列化为 JSON 并将其传输以供客户端操作后,客户端会更新名称字段。然而,它在数据传输过程中无意中将 id 字段编码为字符串。
在服务器上接收到修改后的 JSON 数据后,原始 tySurvey 结构体被解组,导致错误:“json: 无法将字符串解组为Go 类型的值int64."
解决方案
解决方案在于通过将 ,string 附加到类型定义来修改 JSON 字段标签。这指示 json 解组器接受整数值的字符串表示形式:
type tySurvey struct { Id int64 `json:"id,string,omitempty"` Name string `json:"name,omitempty"` }
,string 选项允许在解组期间将字符串编码的整数值无缝转换为相应的 Go 值。
其他注意事项
指定时,omitempty字符串编码的整数值,重要的是要注意空字符串无法解码。此限制确保仅在编码期间使用 omitempty。
结论
将 ,string 附加到 JSON 字段标记可以轻松解组 Go 中的字符串编码整数值。该技术通过适应可能无意中更改字段类型的客户端数据操作,简化了数据处理并增强了代码的稳健性。
以上是如何在 JSON 解组中处理 Int64 字段的字符串输入?的详细内容。更多信息请关注PHP中文网其他相关文章!