[英]Json unmarshal type model in golang
我有一个RESTful服务,返回的响应类似于以下所示:
"Basket" : {
"Count": 1,
"Fruits": {[
{
"Name":"Mango",
"Season":"Summer"
},
{
"Name":"Fig",
"Season":"Winter"}
]}
}
我正在尝试创建Go lang模型以解组内容。 以下是我尝试过的代码:
type Response struct {
Count int
Fruits []Fruit
}
type Fruit struct {
Name string
Season string
}
但是,当我在测试代码中封送Response对象时,看不到类似的json。 ( https://play.golang.org/p/EGKqfbwFvW )编组数据始终显示为:
{
"Count":100,
"Fruits":[
{"Name":"Mango","Season":"Summer"},
{"Name":"Fig","Season":"Winter"}
]
}
注意,结果在原始json中显示为数组[]而不是{[]} 。 如何为此响应在golang中建模结构?
我将在“响应”(Response)中将“购物篮”(Baskets)构造为一个结构,创建一个“ BasketsData”结构,并为其赋予所有标签。
type Fruit struct {
Name string `json:"Name"`
Season string `json:"Season"`
}
type BasketData struct {
Count int `json:"Count"`
Fruits []Fruit `json:"Fruits"`
}
type Response struct {
Basket BasketData `json:"Basket"`
}
这样,在编组时将获得顶级JSON响应。
fruitmania := []Fruit{{Name: "Mango", Season: "Summer"},
{Name: "Fig", Season: "Winter"}}
basket := Response{BasketData{Count: 100, Fruits: fruitmania}}
b, _ := json.Marshal(basket)
fmt.Println(string(b))
checkit-checkout: https : //play.golang.org/p/TuUwBLs_Ql
您的模型是完全正确和有效的,但JSON对象不是。 "Fruits"
应该是键值对,或者应该用[]
而不是{}
包裹,则没有名称。
JSON obj的格式应如下所示:
{
"Basket" : {
"Count": 1,
"Fruits": [
{
"Name":"Mango",
"Season":"Summer"
},
{
"Name":"Fig",
"Season":"Winter"
}
]
}
}
而且实际上无效的json不起作用https://play.golang.org/p/yoW7t4NfI7
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.