簡體   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