我已经发布了一个文件和一些参数,但现在我需要发送一个带结构的嵌套参数,我不知道在哪里使用它(我在Go中是新的)。
这就是我所拥有的: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
struct with the file。有什么想法吗?
谢谢!
答案 0 :(得分: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)
}