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 を指定できます。 names:
type Machine struct { MachIp string `json:"m_ip"` MachType string `json:"m_type"` MachSerial string `json:"m_serial"` }
タグを使用すると、Go の構造体フィールドのプライバシーを維持しながら JSON フィールド名をカスタマイズできます。
以上がGo 構造体がマーシャリング時に空の JSON オブジェクトを生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。