无法在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值
所有修复的工作示例:在此处发布代码。感谢帮助:)感谢帮助:)