2017-10-24 17 views
-3

私は、構造体を持っている:動的に割り当てStucture

type person struct{ 
    FirstN  [10]byte 
    Last Name [10]byte 
    Address  [15]byte 
    zip   [6]byte 
} 

それから私は、このマップは、私の構造体とまったく同じである

xyz = [01:aaaaaaaaaabbbbbbbbbbccccccccccccccc123456] 

の地図います。基本的に私の構造体をマップの文字列でオーバーレイすると、完全に一致します。

私はマーシャルを使用してこのデータのJSON文字列を取得しようとしています。しかし、それを理解するためには、マップ内のデータを構造体に更新し、構造体ポインタをマーシャリングに渡す必要があります

しかし、キー'01を使ってマップからデータを取得する方法が見つかりません'これは文字列であり、それを使って私の構造体を初期化します。マップから文字列を解析して、構造体の各フィールドを更新するコードを追加したくありません。それを行う方法があるか、またはハードコーディングが唯一のオプションです。

また、マップ文字列からJSON文字列を直接作成する方法はありますか?

+0

私はあなたのマップを理解していません。あなたのマップはGoでどのように定義されていますか?あなたが私たちに示したものは、有効なGoコードではありません。それは何ですか? – Flimzy

+0

私のマップはpersonMap:= make(map [string] string)です。私はpersonMap:= [01:aaaaaaaaaabbbbbbbbbbccccccccccccccc123456]によって作成しました。 JSONオブジェクトを作成するためにjsResp、_:= json.Marshal(PersonStructPtr)を呼び出します...これはあなたの質問を明確にしますか? – MKS

答えて

2

これは、jsonのデータではありません。しかし、binary.Read関数は、構造体レイアウトに続くバイナリストリームから任意の固定サイズの値をデコードします。

data := []byte("aaaaaaaaaaaaaaaaaaaaccccccccccccccc123456") 
err := binary.Read(bytes.NewReader(data), binary.LittleEndian, &p) 

https://play.golang.org/p/-I_XhUCvNN

+0

これはうまくいきました..ありがとう@JimB。しかし、あなたが助けることができるなら、私は別のフォローアップを持っています... – MKS

+0

それで、私はそれが見えるコメントに多くのデータを追加することができません... @JimBあなたはhttpsの下のリンクで私のフォローアップの質問を見てください: /stackoverflow.com/questions/46941841/golang-populate-array-of-structure – MKS

関連する問題