総合的な分析のJSONタグの記事をGO

そこ財産バッククォートコンテンツの右側に囲まれたときに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  // 出力:試験

 

おすすめ

転載: www.cnblogs.com/lurenq/p/11533219.html