Untersuchung der JSON-Generierungsbeschränkungen für Strukturfelder mit Kleinbuchstaben-Präfixen in Go
In Go stoßen Entwickler beim Versuch, JSON daraus zu generieren, häufig auf ein Problem Strukturen, die Felder mit kleingeschriebenen Präfixzeichen besitzen. Um dieses Problem effektiv zu lösen, ist es wichtig, den zugrunde liegenden Grund zu verstehen.
Das Problem entsteht aufgrund der Go-Konvention zur Identifizierung öffentlicher Bezeichner innerhalb eines Pakets. Bezeichner mit einem Großbuchstaben am Anfang gelten als öffentlich und können außerhalb des Pakets abgerufen werden. Umgekehrt gelten Bezeichner mit einem Anfangsbuchstaben in Kleinbuchstaben als privat und sind nur innerhalb des aktuellen Pakets sichtbar.
Beachten Sie den folgenden Codeausschnitt:
type Machine struct { m_ip string m_type string m_serial string }
Beim Versuch, JSON aus einer Instanz von zu generieren Wenn Sie diese Struktur mit json.Marshal() verwenden, erhalten Sie möglicherweise ein unerwartetes Ergebnis von nur „{}“. Dies liegt daran, dass die Felder m_ip, m_type und m_serial für json.Marshal() nicht sichtbar sind, da sie als privat gelten (angezeigt durch die Kleinbuchstaben-Präfixe).
Ändern Sie die Felder jedoch in Großbuchstaben, wie unten gezeigt , wird das Problem beheben:
type Machine struct { MachIp string MachType string MachSerial string }
Durch die Verwendung von Präfixen in Großbuchstaben machen Sie diese Felder öffentlich zugänglich und ermöglichen so json.Marshal() um die gewünschte JSON-Ausgabe erfolgreich zu generieren.
Wenn Sie in Ihrer JSON-Ausgabe Bezeichner in Kleinbuchstaben benötigen, können Sie Feld-Tagging verwenden. Indem Sie jedes Feld mit dem entsprechenden JSON-Namen versehen, können Sie das Standardverhalten überschreiben. Zum Beispiel:
type Machine struct { MachIp string `json:"m_ip"` MachType string `json:"m_type"` MachSerial string `json:"m_serial"` }
Durch diesen Tagging-Mechanismus können Sie die gewünschten JSON-Feldnamen unabhängig von der anfänglichen Groß-/Kleinschreibung explizit angeben und so JSON-Ausgaben erstellen, die den Anforderungen Ihrer Anwendung entsprechen.
Das obige ist der detaillierte Inhalt vonWarum serialisiert „json.Marshal()' von Go Strukturfelder nicht mit Kleinbuchstaben-Präfixen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!