Beim Versuch, eine Struktur in JSON zu marshallen, können Entwickler auf ein unerwartetes Problem stoßen, bei dem die Das Ergebnis wird als leeres Objekt zurückgegeben. Dieses Verhalten ist darauf zurückzuführen, dass Go die Groß-/Kleinschreibung verwendet, um zwischen privaten und öffentlichen Bezeichnern zu unterscheiden.
Im bereitgestellten Beispiel verfügt die Strukturmaschine über Felder mit Kleinbuchstaben am Anfang:
type Machine struct { m_ip string m_type string m_serial string }
Standardmäßig Go betrachtet Bezeichner mit kleingeschriebenen Anfangszeichen als privat. Dies bedeutet, dass die Felder in Machine für json.Marshal nicht sichtbar sind, da sie nicht Teil desselben Pakets wie der Code sind.
Um dieses Problem zu beheben, können Entwickler die Feldnamen in Großbuchstaben ändern sie öffentlich:
type Machine struct { MachIp string MachType string MachSerial string }
Wenn Entwickler jedoch Kleinbuchstaben-Bezeichner in der JSON-Ausgabe beibehalten möchten, können sie JSON verwenden Tags:
type Machine struct { MachIp string `json:"m_ip"` MachType string `json:"m_type"` MachSerial string `json:"m_serial"` }
Durch Hinzufügen von json:"m_ip" zum MachIp-Feld enthält der resultierende JSON beispielsweise die gewünschte Kleinbuchstaben-ID. Dies wird erreicht, weil das JSON-Tag das standardmäßige Fallverhalten überschreibt.
Das obige ist der detaillierte Inhalt vonWarum enthält „json.Marshal' von Go keine Strukturfelder mit Namen in Kleinbuchstaben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!