繁体   English   中英

Golang中的Json Unmarshal类型模型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM