处理 JSON 数据时,可能会遇到 JSON 字段表示为字符串的情况而不是整数,导致 JSON Unmarshal 失败。当 JavaScript(不能很好地处理 int64 值)对 JSON 数据进行编码时,就会出现此问题。
考虑以下结构:
type tySurvey struct { Id int64 `json:"id,omitempty"` Name string `json:"name,omitempty"` }
当您使用标准 Marshal 将此结构编组为 JSON 时函数,然后使用 jQuery 修改 name 字段,然后将其发布回 Go 处理程序,id 字段可能会编码为字符串。当尝试将 JSON 解组到 tySurvey 结构时,这会导致错误:
json: cannot unmarshal string into Go value of type int64
要解决此问题,您可以通过向 JSON 添加 ,string 来指定可以从字符串中解组 id 字段tag:
type tySurvey struct { Id int64 `json:"id,string,omitempty"` // Add ",string" to handle string values Name string `json:"name,omitempty"` }
这允许 JSON Unmarshal 成功地将 id 字段的字符串表示形式转换为整数。
请注意,不建议在带有 ,string 的字段上设置 omitempty,因为空字符串无法解组为整数。
以上是当 JSON 字段是字符串而不是整数时,如何解组?的详细内容。更多信息请关注PHP中文网其他相关文章!