为了账号安全,请及时绑定邮箱和手机立即绑定

无法在 golang 中正确解组数据从映射到结构

无法在 golang 中正确解组数据从映射到结构

Go
隔江千里 2021-11-22 19:37:51
我目前无法将数据从地图正确解组到结构中。以下是代码片段(操场上的简短代码):请您提供在解组回数据时获取默认值的原因。package mainimport (    "fmt"    "encoding/json"    "os"    )func main() {    fmt.Println("Hello, playground")    type PDPOffer struct {        cart_value            int    `json:"cart_value"`        discount_amount_default int    `json:"discount_amount_default"`        max_discount           string `json:"max_discount"`        }        a:= map[string]interface{} {        "cart_value"              : 1,        "max_discount"            : 2,        }        var pdf PDPOffer        b, err := json.Marshal(a)        if err != nil {            fmt.Println("error:", err)        }        os.Stdout.Write(b)//working        err1 := json.Unmarshal(b, &pdf)        if err1 != nil {            fmt.Println("error:", err)        }        fmt.Printf("%+v", pdf)//displaying just the defualt values????????}
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

此外,您试图将一个 int 值编组为“max_discount”的字符串,您需要将其作为字符串存储在您要编组的地图中:


a := map[string]interface{}{

    "cart_value":   1,

    "max_discount": "2",

}

错误处理有一个错误检查err1 != nil然后打印err隐藏消息error: json: cannot unmarshal number into Go value of type string


所有修复的工作示例:http : //play.golang.org/p/L8VC-531nS


查看完整回答
反对 回复 2021-11-22
?
冉冉说

TA贡献1877条经验 获得超1个赞

解组不起作用的原因是您需要公开结构的字段,为此您需要以大写字母开头的字段名称。有以下内容:


type PDPOffer struct {

        Cart_value            int    `json:"cart_value"`

        Discount_amount_default int    `json:"discount_amount_default"`

        Max_discount           string `json:"max_discount"`

        }


查看完整回答
反对 回复 2021-11-22
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

json.Marshal并且json.Unmarshal只能处理导出的结构字段。您的字段不会导出,对 json 代码不可见。


查看完整回答
反对 回复 2021-11-22
  • 3 回答
  • 0 关注
  • 281 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信