首頁 >後端開發 >Golang >為什麼我的 Go 結構在編組時會產生空 JSON 物件?

為什麼我的 Go 結構在編組時會產生空 JSON 物件?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-26 00:28:10987瀏覽

Why Does My Go Struct Produce an Empty JSON Object When Marshalling?

Go 中的JSON 編組:結構體欄位的大小寫敏感

嘗試從Go 中的結構體產生JSON 時,可能會遇到意外結果如果結構體的欄位以小寫字元開頭。考慮以下結構:

type Machine struct {
  m_ip string
  m_type string
  m_serial string
}

將此結構編組為 JSON 將產生一個空 JSON 物件 {}。這是因為,按照慣例,Go 使用標識符的大小寫來確定其在包中的可見性。透過以小寫字元開頭欄位名稱,它們被標記為私有且無法被 json.Marshal 函數存取。

要解決此問題,可以透過將每個單字的第一個字母大寫來將欄位名稱公開:

type Machine struct {
  MachIp string
  MachType string
  MachSerial string
}

或者,如果希望在JSON 輸出中使用小寫欄位名稱,可以使用標籤來指定所需的JSON名稱:

type Machine struct {
  MachIp     string `json:"m_ip"`
  MachType   string `json:"m_type"`
  MachSerial string `json:"m_serial"`
}

透過使用標籤,可以自訂JSON 欄位名稱,同時保持Go中結構體欄位的隱私性。

以上是為什麼我的 Go 結構在編組時會產生空 JSON 物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn