首页  >  文章  >  后端开发  >  当 JSON 字段是字符串而不是整数时,如何解组?

当 JSON 字段是字符串而不是整数时,如何解组?

DDD
DDD原创
2024-11-12 17:33:02850浏览

How to Unmarshal JSON Fields When They Are Strings Instead of Integers?

当 JSON 字段为字符串而不是整数时如何处理 Unmarshal 错误

处理 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn