json:无法将数字 5088060241 解码为 int 类型的结构

标签 json go integer terraform

我正在使用 OVH 提供程序开发 Terraform 项目,创建记录时,提供程序无法获取记录的 ID 并触发此错误: 无法将数字 5088060240 解码到 int 类型的 Go 结构字段 OvhDomainZoneRecord.id

我在 github 存储库上提出了一个问题,但仍在等待答案。 我想自己纠正这个问题,但我不是 Go 开发者,我找不到任何相关错误。

OvhDomainZoneRecord 的结构:

type OvhDomainZoneRecord struct {
    Id        int    `json:"id,omitempty"`
    Zone      string `json:"zone,omitempty"`
    Target    string `json:"target"`
    Ttl       int    `json:"ttl,omitempty"`
    FieldType string `json:"fieldType"`
    SubDomain string `json:"subDomain,omitempty"`
}

相关文件: https://github.com/terraform-providers/terraform-provider-ovh/blob/master/ovh/resource_ovh_domain_zone_record.go

最佳答案

int 的大小为 32 位或 64 位,具体取决于您编译和运行的目标体系结构。您的输入 5088060240 大于 32 位整数的最大值(即 2147483647),因此如果您的 int 是 32 位,您会收到此错误。

最简单的解决方法是使用int64。请参阅此示例:

var i int32
fmt.Println(json.Unmarshal([]byte("5088060240"), &i))

var j int64
fmt.Println(json.Unmarshal([]byte("5088060240"), &j))

输出(在 Go Playground 上尝试):

json: cannot unmarshal number 5088060240 into Go value of type int32
<nil>

关于json:无法将数字 5088060241 解码为 int 类型的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59032074/

相关文章:

c - 整数长度未知时保留前导零

sql - 将整数截断为特定位数?

php - 使用 Swift 在 POST 请求中将正确转义的 JSON 提交给 PHP

performance - 交换两个整数值的最佳方式?

JavaScript 或 Ruby。重新格式化 JSON 对象

rest - 去 SSL 监听器

go - 初始化与数据库的连接时,SQLX 中未定义 'err'

go - 使用 channel 来调度任务以进行例程

c# - WCF服务中具有C#的json?

javascript - 与特定地址匹配的对象值求和