在Go Lang POST请求中创建json有效负载?

时间:2018-02-11 23:54:30

标签: json http post go payload

request, err := http.NewRequest("POST", url,bytes.NewBuffer(**myJsonPayload**))

我是Go的新手并尝试使用动态“ myJsonPayload ”发布帖子请求,这将针对不同的请求进行更改。

3 个答案:

答案 0 :(得分:3)

使用Go标准库的Marshal in the encoding/json package将数据编码为JSON。

签名:

func Marshal(v interface{}) ([]byte, error)

包docs中的示例,其中输入数据恰好是具有int,string和string slice字段类型的结构类型:

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)

答案 1 :(得分:2)

您还可以使用map动态更改json有效内容。下面是执行此操作的示例代码。

payload := map[string]interface{}{"id":1, "name":"zahid"}
byts, _ := json.Marshal(payload)
fmt.Println(string(byts)) // {"id":1,"name":"zahid"}

答案 2 :(得分:2)

您也可以使用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://stackoverflow.com", b)
   if err != nil {
      panic(err)
   }
   new(http.Client).Do(r)
}