そこ財産バッククォートコンテンツの右側に囲まれたときにJSON形式の文字列を扱うには、構造体の構造は、多くの場合、文を参照してください。フォーム:
1つのタイプのユーザ構造体{ 2 ユーザID INT `JSON:" USER_ID " BSON:" USER_ID " ` 3 ユーザー名の文字列 `JSON:" USER_NAME " BSON:" USER_NAME " ` 4 }
構造体のメンバ変数ラベル(タグ)説明
こののより詳細な理解のために、我々は最初のgolangで、名前が推奨される方法は、こぶ付きですし、最初の文字の場合には特別な文法的な意味を持ち、golangの基礎を見なければならない:パッケージの外に参照することはできません。しかし、他のシステムとの定期的な交換データが、例えば、MongoDBのああのような記憶され、JSON形式に変換されます。あなたは、キー属性名として、この時間を使用している場合は、必ずしもプロジェクトの要件を満たしていない場合があります。
そうキーとして使用される場合、特定のフィールド他のデータ形式に変換golangのタグ(タグ)と呼ばれる抗引用符、の含有量より。例えば、フォーマットJSON例に変わります。
1つの U:=&ユーザー{ユーザーID:1、ユーザー名:" トニー" } 2 J、_:= json.Marshal(U) 3 fmt.Println(文字列(J))
//出力内容:
// { "USER_ID":1、 "USER_NAME": "トニー"}
//ラベルは、プロパティの説明で出力を増加させない場合:
{//「ユーザーID」:1、「ユーザー名」:「トニー」}
//属性名は、構造体のキーで直接行うことが分かります。
データを格納するために使用された文があります。// == BSON == MongoDBの使用
構造体のメンバ変数のラベル(タグ)を取得します
私たちは、自分の業務の一部、タグのコンテンツを使用する必要性をパッケージ化する必要があるときに、澤ヤンは、それを取りに行きましたか?ここでは、パッケージの反射法は、(反映)を取得し使用することができます。
1 T:= reflect.TypeOf(U) 2フィールド:= t.Elem()フィールド(0 ) 3 FMT .Println(field.Tag.Get(" JSON " )) 4 FMT .Println(field.Tag.Get (" BSON "))
次のように完全なコードは次のとおりです。
1つの パッケージメイン 2 3 インポート( 4 " エンコーディング/ JSON " 5 " FMT " 6 "が反映" 7 ) 8 9 FUNCメイン(){ 10 種類のユーザ構造体{ 11 ユーザID INT `JSON:" USER_ID " BSON:" USER_ID " ` 12 ユーザー名の文字列 `JSON:" USER_NAME " BSON:"USER_NAME" ` 13 } 14 // 出力フォーマットJSON 15 U:= {ユーザ・ユーザーID:1、ユーザー名:" トニー" } 16 J、_:= json.Marshal(U) 。17 fmt.Println(文字列(J)) 18であります / / { "USER_ID" :. 1、 "USER_NAME": "トニー"}コンテンツ出力 19。 20がある // コンテンツのタグ 21である T:= reflect.TypeOf(U) 22はある = t.Elem()フィールド、(:フィールド。0 ) 23 fmt.Println(field.Tag.Get(" JSON ")) 24 // 出力:USER_ID 25 fmt.Println(field.Tag.Get(" BSON " )) 26である // 出力:USER_ID 27 }
カスタムタグ
1つのタイプのユーザ構造体{ 2 ユーザID INT `JSON:" USER_ID " BSON:" USER_ID "テスト:" テスト" ` 3 ユーザー名の文字列 `JSON:" USER_NAME " BSON:" USER_NAME " ` 4 }
タグテストの値を取得します。
1 // タグの内容を取得する 2 typeof演算:= reflect.TypeOf(U)を 3フィールド:= typeof演算 .ELEM()フィールド、(0 ) 。4 fmt.Println(field.Tag.Get(" JSON " )) 。5 / / 出力:USER_ID 。6 fmt.Println(field.Tag.Get(" BSON " )) 7。 // 出力:USER_ID 。8 fmt.Println(field.Tag.Get(" 試験" )) 。9 // 出力:試験