如何为 POST 请求创建 json 有效负载?

Posted

技术标签:

【中文标题】如何为 POST 请求创建 json 有效负载?【英文标题】:How can I create a json payload for a POST request? 【发布时间】:2018-07-22 02:34:52 【问题描述】:
request, err := http.NewRequest("POST", url,bytes.NewBuffer(**myJsonPayload**))

我正在尝试使用动态“myJsonPayload”进行发布请求,该请求将针对不同的请求进行更改。

【问题讨论】:

我尝试了以下方法:payload := []byte( "abc":xyz, "test":"test", ) jsonPayload, _ := json.Marshal(payload) request, err := http.NewRequest("POST", url , bytes.NewBuffer(jsonPayload)) 这实际上有效,但静态有效负载。我只想让它充满活力。 【参考方案1】:

你也可以使用json#Encoder.Encode:

package main

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

func main() 
   s, b := structMonth, Day int12, 31, new(bytes.Buffer)
   json.NewEncoder(b).Encode(s)
   r, err := http.NewRequest("POST", "https://***.com", b)
   if err != nil 
      panic(err)
   
   new(http.Client).Do(r)

【讨论】:

【参考方案2】:

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

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

【讨论】:

这并没有错,但你永远不应该在 Marshal 方法中抑制错误。【参考方案3】:

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

签名:

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

来自包文档的示例,其中输入数据恰好是具有 int、string 和 string 切片字段类型的结构类型:

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)

【讨论】:

以上是关于如何为 POST 请求创建 json 有效负载?的主要内容,如果未能解决你的问题,请参考以下文章

Python 操作Redis

python爬虫入门----- 阿里巴巴供应商爬虫

Python词典设置默认值小技巧

《python学习手册(第4版)》pdf

Django settings.py 的media路径设置

Python中的赋值,浅拷贝和深拷贝的区别