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

无法在golang中将数据从映射正确解组到结构,go,marshalling,Go,Marshalling,我目前无法将数据正确地从地图解组到结构中。以下是一段代码片段(): 请您提供在解组数据时获取默认值的原因 package main import ( "fmt" "encoding/json" "os" ) func main() { fmt.Println("Hello, playground") type PDPOffer struct { cart_value int `json:"cart_v

我目前无法将数据正确地从地图解组到结构中。以下是一段代码片段():

请您提供在解组数据时获取默认值的原因

package main

import (
    "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????????
}

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

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

type PDPOffer struct {
        Cart_value            int    `json:"cart_value"`
        Discount_amount_default int    `json:"discount_amount_default"`
        Max_discount           string `json:"max_discount"`
        }

此外,您试图将一个int值封送到“max_折扣”的字符串中,您需要将其存储为正在封送的映射中的字符串:

a := map[string]interface{}{
    "cart_value":   1,
    "max_discount": "2",
}
错误处理在检查
err1!=nil
然后打印
err
,它隐藏了消息
错误:json:无法将数字解组为字符串类型的Go值


所有修复的工作示例:

在此处发布代码。感谢帮助:)感谢帮助:)