gpt4 book ai didi

json - 来自csv文件的JSON格式的Golang POST请求

转载 作者:行者123 更新时间:2023-12-01 21:17:33 29 4
gpt4 key购买 nike

因此,我尝试将JSON格式的csv文件发布到Golang中的网站。我已经成功发布了单个JSON文件。但是,这不是我希望程序达到的目的。基本上,我正在尝试为网站创建一个帐户生成器。我希望能够一次生成多个帐户。我觉得最好的方法是使用csv文件。
我试过使用encoding/csv读取csv文件,然后编码为JSON。另外,ioutil.ReadFile()。但是,该站点的响应是“姓氏是必填字段,姓氏是必填字段”等。因此,这显然意味着csv数据未采用JSON格式。我将在下面的ioutil.ReadFile()中显示代码。

func main() {
file, _ := ioutil.ReadFile("accounts.csv")

jsonConv, _ := json.Marshal(file)

client := http.Client{}

req, err := http.NewRequest("POST", "websiteUrlHere", bytes.NewBuffer(jsonConv))
req.Header.Add("cookie", `"really long cookie goes here"`)
req.Header.Set("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36")
req.Header.Set("content-type", "application/json")

resp, err := client.Do(req)
if err != nil {
fmt.Print(err)
}
defer resp.Body.Close()
}
(^这只是代码的片段)。
我对这一切仍然很陌生,因此请理解该问题是否缺少任何内容。我也曾寻找过类似的问题,但我发现的只是使用结构。我认为这不适用于此,因为目标是立即创建 无限帐户。
希望以上内容足够。谢谢你。

最佳答案

代码的问题实际上是您尝试使用以下命令将文件转换为字节:

file, _ := ioutil.ReadFile("accounts.csv")
...然后您再次尝试使用以下方法将该字节的片段转换为JSON字节:
jsonConv, _ := json.Marshal(file)
文件的文本内容在其中存储为变量 file中的 byte slice ,然后将该 byte slice (字节形式的文件内容)转换为JSON字节数组。因此,您基本上是在发送数字的JSON数组...不好。
这里的正常流程是获取 file字节,然后从中创建Go结构。一旦您的Go对象到位,那么您就将编码为JSON。在将Go对象转换为JSON文本形式之后,它将Go对象转换为字节的一部分。
因此,您缺少的是Go结构的中间步骤,但还应记住,使用 json.Marshal()将Go结构转换为JSON字节将仅显示已导出的字段。同样,通常您应该使用struct标记自定义字段的确切显示方式。
最好的选择就是坚持使用JSON,而不必担心CSV。在您自己的代码示例中,您正在获取CSV,然后尝试将其转换为JSON ...因此,仅使用JSON。
如果您想发送多个帐户,只需将Go结构设为一个 slice ,该 slice 将编码到JSON数组中,这基本上就是您要尝试的操作。最终结果将是一个JSON帐户数组。这是一个简单的例子:
package main

import (
"fmt"
"encoding/json"
)

type Account struct {
Username string `json:"username"`
Email string `json:"email"`
}

type AccountsRequest struct {
Accounts []Account `json:"accounts"`
}

func main() {
//gather account info
acct1 := Account{Username: "tom", Email: "tom@example.com"}
acct2 := Account{Username: "dick", Email: "dick@example.com"}
acct3 := Account{Username: "harry", Email: "harry@example.com"}

//create request
acctsReq := AccountsRequest{Accounts: []Account{acct1, acct2, acct3}}

//convert to JSON bytes/data
//jsonData, _ := json.Marshal(acctsReq)

//debug/output
jsonDataPretty, _ := json.MarshalIndent(acctsReq, "", " ")
fmt.Println(string(jsonDataPretty))

//send request with data
//...
}
可运行的 here在操场上。
关键是结构已经设置好并且可以使用了,结构标签决定了JSON字段名称是什么(即每个帐户的 usernameemail以及整个帐户数组的 accounts)。
希望能有所帮助。如果您需要更多具体帮助,请发表评论。

关于json - 来自csv文件的JSON格式的Golang POST请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62491471/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com