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中文網其他相關文章!