Heim >Backend-Entwicklung >Golang >Warum erzeugt meine Go-Struktur beim Marshalling ein leeres JSON-Objekt?
JSON-Marshalling in Go: Groß-/Kleinschreibung von Strukturfeldern
Beim Versuch, JSON aus einer Struktur in Go zu generieren, kann es zu unerwarteten Ergebnissen kommen wenn die Felder der Struktur mit Kleinbuchstaben beginnen. Betrachten Sie die folgende Struktur:
type Machine struct { m_ip string m_type string m_serial string }
Das Marshalling dieser Struktur an JSON führt zu einem leeren JSON-Objekt {}. Dies liegt daran, dass Go vereinbarungsgemäß die Groß-/Kleinschreibung eines Bezeichners verwendet, um seine Sichtbarkeit innerhalb eines Pakets zu bestimmen. Indem Sie die Feldnamen mit Kleinbuchstaben beginnen, werden sie als privat markiert und sind für die json.Marshal-Funktion unzugänglich.
Um dieses Problem zu beheben, können Sie die Feldnamen entweder öffentlich machen, indem Sie den ersten Buchstaben jedes Wortes groß schreiben :
type Machine struct { MachIp string MachType string MachSerial string }
Oder, wenn man Feldnamen in Kleinbuchstaben in der JSON-Ausgabe verwenden möchte, kann man Tags verwenden, um das gewünschte JSON anzugeben Namen:
type Machine struct { MachIp string `json:"m_ip"` MachType string `json:"m_type"` MachSerial string `json:"m_serial"` }
Durch die Verwendung von Tags kann man die JSON-Feldnamen anpassen und gleichzeitig die Privatsphäre der Strukturfelder in Go wahren.
Das obige ist der detaillierte Inhalt vonWarum erzeugt meine Go-Struktur beim Marshalling ein leeres JSON-Objekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!