我正在使用 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"`
}
最佳答案
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/