175

mongo データベースからアイテムを取得する必要があるため、このような構造体を定義しました

type Page struct {
    PageId string                 `bson:"pageId"`
    Meta   map[string]interface{} `bson:"meta"`
}

また、JSON にエンコードする必要がありますが、フィールドが大文字としてエンコードされるため (pageId ではなく PageId を取得します)、JSON のフィールド タグも定義する必要があります。私はこのようなことを試しましたが、うまくいきませんでした:

type Page struct {
    PageId string                 `bson:"pageId",json:"pageId"`
    Meta   map[string]interface{} `bson:"meta",json:"pageId"`
}

では、構造体で複数の名前タグを定義するにはどうすればよいでしょうか?

4

2 に答える 2

318

パッケージのドキュメントにはreflect次のように書かれています:

慣例により、タグ文字列は、オプションでスペースで区切られた key:"value" ペアの連結です。各キーは、スペース (U+0020 ' ')、引用符 (U+0022 '"')、およびコロン (U+003A ':') 以外の非制御文字で構成される空でない文字列です。各値は引用符で囲まれています。 U+0022 '"' 文字と Go 文字列リテラル構文を使用します。

あなたがする必要があるのは、タグ文字列の区切りとしてカンマの代わりにスペースを使用することです.

type Page struct {
    PageId string                 `bson:"pageId" json:"pageId"`
    Meta   map[string]interface{} `bson:"meta" json:"meta"`
}
于 2013-09-05T12:07:57.737 に答える
90

受け入れられた答えをありがとう。

以下は、私のような怠け者のためのものです。

正しくない

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:"pageId"`
}
于 2015-06-04T10:18:52.917 に答える