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






你可能感興趣的文章

[CSS] 切版眉角的部份

[CSS] 切版眉角的部份

Performance Analysis

Performance Analysis

Day00:V8 bytecode 系列文介紹

Day00:V8 bytecode 系列文介紹






留言討論