繁体   English   中英

Go 中的问题与 JSON 解组 map[string]int64

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM