2016-09-17 3 views
0

私はembedCodeと呼ばれるキーを持つVideoInfoという構造体を持っています。私が照会しているAPIは埋め込みコードをembed_codeと返します。応答をアンマーシャリングしている間に、どうすればembed_codeembedCodeに入りますか?jsonのレスポンスとは異なるjsonキーを持つStructを扱う方法

大きなjson文字列を自動的に構造体に変換する簡単な方法や、マップのみを使用する方法もありますか?

答えて

1

は、構造体の宣言に対応するアノテーションを使用:

type VideoInfo struct { 
    EmbedCode string `json:"embed_code"` 
} 

あなたは、フィールド名を大文字にする必要がありますので、マーシャラー/アンマーシャラーのみ、公共の場を処理します。

構造全体の変換に関しては、それは簡単です。アンマーシャルにインスタンスを宣言し、(テストから)json.Unmarshalメソッドへの参照を渡す:

data, _ := json.Marshal(request) 

var resp response.VideoInfo 
if err := json.Unmarshal(data, &resp); err != nil { 
    t.Errorf("unexpected error, %v", err) 
} 
+0

これは私がやってしまったものですので、あなたはこれが正しい方法であることを確認した喜んでイム。本当にありがとう! –

1

まず、構造体のフィールドは大文字から始まり、publicにする必要があります。ですから、そのようなことが必要です。

type VideoInfo struct { 
    EmbedCode string `json:"embed_code"` 
} 

をそして詳細はdocumentationを見てください。フィールド名を再マッピングに関して

関連する問題