【发布时间】:2021-05-09 08:47:03
【问题描述】:
我有这些“结构”
type Results struct {
Gender string `json:"gender"`
Name struct {
First string `json:"first"`
Last string `json:"last"`
} `json:"name"`
Location struct {
Postcode int `json:"postcode"`
}
Registered struct {
Date string `json:"date"`
} `json:"registered"`
}
type Info struct {
Seed string `json:"seed"`
Results int64 `json:"results"`
Page int64 `json:"page"`
Version string `json:"version"`
}
type Response struct {
Results []Results `json:"results"`
Info Info `json:"info"`
}
我向外部 API 发出请求并将数据转换为 JSON 视图。 我事先知道所有字段的类型,但是“邮政编码”字段出现问题。我得到不同类型的值,这就是我得到 JSON 解码错误的原因。 在这种情况下,“邮政编码”可以是以下三种变体之一:
- 字符串~“13353”
- int ~ 13353
- 字符串~“13353邮政编码”
将postcode 类型从string 更改为json.Number 解决了这个问题。
但是这个方案不满足第三个“选项”。
我知道我可以尝试创建自定义类型并在其上实现接口。在我看来,使用json.RawMessage 是最好的解决方案。这是我第一次遇到这个问题,所以我仍在寻找解决方案的实现并阅读文档。
在这种情况下,最好的解决方案是什么? 提前致谢。
【问题讨论】:
标签: json api go unmarshalling