如何为 POST 请求创建 json 负载?
How can I create a json payload for a POST request?
request, err := http.NewRequest("POST", url,bytes.NewBuffer(**myJsonPayload**))
我正在尝试使用动态“myJsonPayload”发出 post 请求,这将根据不同的请求而改变。
使用 Go 标准库的 Marshal
in the encoding/json
package 将您的数据编码为 JSON。
签名:
func Marshal(v interface{}) ([]byte, error)
包文档中的示例,其中输入数据恰好是具有 int、字符串和字符串切片字段类型的结构类型:
type ColorGroup struct {
ID int
Name string
Colors []string
}
group := ColorGroup{
ID: 1,
Name: "Reds",
Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},
}
b, err := json.Marshal(group)
您还可以使用地图动态更改 json 负载。下面是执行此操作的示例代码。
payload := map[string]interface{}{"id":1, "name":"zahid"}
byts, _ := json.Marshal(payload)
fmt.Println(string(byts)) // {"id":1,"name":"zahid"}
你也可以使用json#Encoder.Encode:
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
s, b := struct{Month, Day int}{12, 31}, new(bytes.Buffer)
json.NewEncoder(b).Encode(s)
r, err := http.NewRequest("POST", "https://whosebug.com", b)
if err != nil {
panic(err)
}
new(http.Client).Do(r)
}
request, err := http.NewRequest("POST", url,bytes.NewBuffer(**myJsonPayload**))
我正在尝试使用动态“myJsonPayload”发出 post 请求,这将根据不同的请求而改变。
使用 Go 标准库的 Marshal
in the encoding/json
package 将您的数据编码为 JSON。
签名:
func Marshal(v interface{}) ([]byte, error)
包文档中的示例,其中输入数据恰好是具有 int、字符串和字符串切片字段类型的结构类型:
type ColorGroup struct {
ID int
Name string
Colors []string
}
group := ColorGroup{
ID: 1,
Name: "Reds",
Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},
}
b, err := json.Marshal(group)
您还可以使用地图动态更改 json 负载。下面是执行此操作的示例代码。
payload := map[string]interface{}{"id":1, "name":"zahid"}
byts, _ := json.Marshal(payload)
fmt.Println(string(byts)) // {"id":1,"name":"zahid"}
你也可以使用json#Encoder.Encode:
package main
import (
"bytes"
"encoding/json"
"net/http"
)
func main() {
s, b := struct{Month, Day int}{12, 31}, new(bytes.Buffer)
json.NewEncoder(b).Encode(s)
r, err := http.NewRequest("POST", "https://whosebug.com", b)
if err != nil {
panic(err)
}
new(http.Client).Do(r)
}