Json 在 golang 中解组类型模型
Json unmarshal type model in golang
我有一个 RESTful 服务,returns 响应类似于以下所示:
"Basket" : {
"Count": 1,
"Fruits": {[
{
"Name":"Mango",
"Season":"Summer"
},
{
"Name":"Fig",
"Season":"Winter"}
]}
}
我正在尝试创建 Go 语言模型来解组内容。以下是我试过的代码:
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"}
]
}
请注意 Fruits 显示为数组 [] 而不是原始 json 中的 {[]}。我如何在 golang 中为这个响应建模结构?
我会让 'Baskets' 成为 'Response' 中的一个结构,创建一个 '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-checkit出:
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
我有一个 RESTful 服务,returns 响应类似于以下所示:
"Basket" : {
"Count": 1,
"Fruits": {[
{
"Name":"Mango",
"Season":"Summer"
},
{
"Name":"Fig",
"Season":"Winter"}
]}
}
我正在尝试创建 Go 语言模型来解组内容。以下是我试过的代码:
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"}
]
}
请注意 Fruits 显示为数组 [] 而不是原始 json 中的 {[]}。我如何在 golang 中为这个响应建模结构?
我会让 'Baskets' 成为 'Response' 中的一个结构,创建一个 '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-checkit出: 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