Go json and embedded struct


使用 embedded struct 做 json 的 marshal 跟 unmarshal 時,json 欄位會省略 struct embedded 欄位的中間名,以比較簡潔的形式呈現。如果 struct 有寫出欄位名稱,json 欄位就會多那一層。

使用 embedded struct

type Serving struct {
    Amount float64
    Unit   string
}

type Food struct {
    Name string
    Serving    // embedded struct
    NutritionInfo
    Comment string
}

marshal 結果:

{
  "Name":"Banana",
  "Amount":100,
  "Unit":"g",
  "Calorie":0,
  "Carb":0,
  "Fat":0,
  "Protein":0,
  "Comment":""
}

不使用 embedded struct

type Food struct {
    Name string
    Serving Serving    // not embedded struct
    NutritionInfo
    Comment string
}

marshal 結果:

{
  "Name":"Banana",
  "Serving":
  {
    "Amount":100,
    "Unit":"g"
  },
  "Calorie":0,
  "Carb":0,
  "Fat":0,
  "Protein":0,
  "Comment":""
}

不用 embeded struct 就會有一層 Serving,用 embedded struct 就會省略 Serving 這層。

#GO






Related Posts

margin 與 padding 差別在哪裡?(2)

margin 與 padding 差別在哪裡?(2)

如何打造更好的科技新創 (Startup) 工作環境和組織文化?

如何打造更好的科技新創 (Startup) 工作環境和組織文化?

6. Singleton

6. Singleton






Comments