json - POST 之前的 gzip JSON 负载

标签 json go gzip

我有一个 []byte 类型的 JSON 对象,它是我使用 json.Marshal 从结构创建的。我想在将 JSON 发布到我的端点之前对其进行 GZip 压缩。以下不起作用:

gz := gzip.NewWriter(myJSON)

因为[]byte没有实现io.Writer

一旦我已经创建了 JSON,是否有一些非常简单的方法可以做到这一点?

最佳答案

压缩到缓冲区并发布该缓冲区。

 var buf bytes.Buffer
 gz := gzip.NewWriter(&buf)
 gz.Write(myJSON)
 gz.Close()

因为一个*bytes.Buffer定义了io.Reader接口(interface),所以在创建请求的时候可以直接使用buffer。

 req, err := http.NewRequest("POST", url, &buf)
 if err != nil {
     // handle error
 }
 req.Header.Set("Content-Encoding", "gzip")
 req.Header.Set("Content-Type", "application/json; charset=utf-8")

关于json - POST 之前的 gzip JSON 负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56994992/

相关文章:

arrays - 指向 slice 和数组的指针

php - 将压缩后的数据编码为json字符串

compression - 将gzip文件解压到指定目录

asp.net - 从具有自定义格式的 PageMethod 返回 JSON 对象

json - NIFI :Json Content Parsing in FlowFile

ruby-on-rails - 如何轻松地从 json 更新属性

go - FieldA.Eq 未定义(类型 cqlc.BooleanColumn 没有字段或方法 Eq)

user-interface - Walk GUI Toolkit for GO 中的文件选择器组件

gzip - 安卓 Volley : gzip response

json - RHS 的震动通配符如何工作?