MongoDB データベースからデータにアクセスし、その後それを JSON にエンコードする場合、必要に応じて問題が発生する可能性があります。フォーマットごとに異なるフィールド名を使用します。たとえば、MongoDB には「pageId」という名前のフィールドが必要ですが、JSON で「pageId」としてエンコードすることもできます。
複数のタグの定義: 誤解された取り組み
構造体に複数の名前タグを定義しようとした最初の試みは失敗しました。タグ文字列区切り文字としてカンマを使用しようとしました:
type Page struct { PageId string `bson:"pageId",json:"pageId"` Meta map[string]interface{} `bson:"meta",json:"pageId"` }
しかし、このアプローチは正しくありません。
成功への道: 宇宙の力を解き放つ
構造体内で複数の名前タグを正常に定義するには、タグ文字列の区切り文字としてスペースを使用する必要があります。その方法は次のとおりです:
type Page struct { PageId string `bson:"pageId" json:"pageId"` Meta map[string]interface{} `bson:"meta" json:"meta"` }
理論的根拠を理解する
reflect パッケージのドキュメントには、タグ文字列は空ではない文字列で構成する必要があると明確に記載されています。キーと値のペア。各キーと値のペアはスペースで区切られ、値は Go 文字列リテラル構文を使用して引用符で囲まれます。
Each value is quoted using U+0022 '"' characters and Go string literal syntax.
この規則に従うことで、構造体に複数の名前タグを効果的に定義し、目的のエンコーディングを実現できます。行動。
以上がGo Structs で MongoDB と JSON エンコーディングに異なるフィールド名を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。