[英]Issues in Go with JSON unmarshal of map[string]int64
我在将 JSON 解组为 Go 结构时遇到问题。 显然问题的根源是不稳定的——int64 的字符串即将到来,除了我没有找到解决它的方法而不将 Count 的数据类型更改为 map[string]string。 我在 SO 上看到了类似的讨论,但它们并没有太大帮助。 这是一个有代表性的代码和问题。 请建议我如何通过。
type Product struct {
Count map[string]int64 `json:",string"`
}
func main() {
s := `{"count":{"FAN":"58"}}`
var pro Product
err := json.Unmarshal([]byte(s), &pro)
if err == nil {
fmt.Printf("%+v\n", pro)
} else {
fmt.Println(err)
fmt.Printf("%+v\n", pro)
}
}
Output:
json:无法将字符串解组为 Go struct field Product.Count of type int64 {Count:map[FAN:0]}
正如您自己注意到的那样,这是因为您没有传入 JSON integer 58
,而是传入 JSON 字符串"58"
。
如果您将示例输入修改为
s := `{"count":{"FAN":58}}`
然后您的代码按预期工作。
您可以编写自定义解组器,但在解组时解决问题可能不是您想要的; 而是找到一种方法来修改您的数据管道并确保正确清理 JSON object。 或者,如果这是不可能的,请按照您的建议使用map[string]string
,然后在解组后修复数据类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.