2016-11-18 5 views
1

私は既にファイルといくつかのパラメータを投稿していますが、構造体を含む入れ子になったパラメータを送信する必要があります。POSTファイルとネストされたパラメータgolang

これは私が持っているものです:https://play.golang.org/p/L4qx6AZhUO

は今、私は、この構造体を作成しています:

type S3 struct { 
    Accesskeyid  string 
    Secretaccesskey string 
    Bucket   string 
} 

type Test struct { 
    Outputformat string 
    Wait   string 
    Output  S3 
    File   []byte 
} 

そして私は、ファイルにTest構造体をお送りしたいと思います。何か案は?

ありがとうございます!

+0

もう少し具体的になることはできますか?あなたのコードを見れば、構造体には何も間違いはありません。出力はS3型なので、既にネストされたオブジェクトを作成しています。そして、ファイルがバイト配列に変換されている場合、Fileフィールドはそれを受け入れるのに問題ありません。だから私はあなたが問題、エラーメッセージなどの詳細を与えることができると思います。 – reticentroot

+0

@reticentrootええ、私のstrucsは正しいですが、私はそれらを使用するのですか?どのように私はそれらをPOST要求に送ることができますか? –

+0

このスタックをチェックし、受け入れられた答えはhttp://stackoverflow.com/questions/24455147/how-do-i-send-a-json-string-in-a-post-request-in-go投稿を作成するには、jsonパッケージを使用してデータをマーシャリングする必要があります。 – reticentroot

答えて

0

さて、あなたが私に話したことと、私があなたの例を持っている情報が少ない場合、私はこのようなことをするかもしれません。私はまた、あなたの構造体に割り当てるバイト配列としてファイルを開く問題が発生した可能性がありますコメントに輝い何から今

package main 

import (
    "bytes" 
    "encoding/json" 
    "fmt" 
    "net/http" 
) 

type S3 struct { 
    Accesskeyid  string 
    Secretaccesskey string 
    Bucket   string 
} 

type Test struct { 
    Outputformat string 
    Wait   string 
    Output  S3 
    File   []byte 
} 

func main() { 
    myStrut := Test{ 
     Outputformat: "Json", 
     Wait:   "Some Time", 
     Output: S3{ 
      Accesskeyid:  "my id", 
      Secretaccesskey: "secret id", 
      Bucket:   "east", 
     }, 
     File: []byte(`some bytes`), 
    } 
    jsonValue, err := json.Marshal(myStrut) 
    if err != nil { 
     panic(err) 
    } 
    fmt.Printf("Test showing that data was marshalled\n %q\n", jsonValue) 
    resp, err := http.Post("some url", "application/json", bytes.NewBuffer(jsonValue)) 
    if err != nil { 
     panic(err) 
    } 
    fmt.Println(resp.Status) 

} 

。ここでは、ファイルをバイト配列として開いて、それらのバイトを構造体に割り当てることができるようにする例を示します。

package main 

import (
    "fmt" 
    "io/ioutil" 
) 

func main() { 

    //An example of how to open a file and turn it into bytes for your struct 
    byteArray, err := ioutil.ReadFile("input.txt") 
    if err != nil { 
     panic(err) 
    } 
    fmt.Println(byteArray) 

} 
関連する問題