第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

POST 之前的 gzip JSON 負(fù)載

POST 之前的 gzip JSON 負(fù)載

Go
qq_笑_17 2023-07-04 09:57:07
我有一個(gè) JSON 類型的對象[]byte,是我使用json.Marshal. 我想先對 JSON 進(jìn)行 GZip,然后再將其發(fā)布到我的端點(diǎn)。以下不起作用:gz := gzip.NewWriter(myJSON)因?yàn)閇]byte不落實(shí)io.Writer。一旦我創(chuàng)建了 JSON,是否有一些非常簡單的方法可以做到這一點(diǎn)?
查看完整描述

2 回答

?
UYOU

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊

壓縮到緩沖區(qū)并發(fā)布該緩沖區(qū)。


 var buf bytes.Buffer

 gz := gzip.NewWriter(&buf)

 gz.Write(myJSON)

 gz.Close()

因?yàn)閍*bytes.Buffer是靜態(tài)io.Reader接口,所以創(chuàng)建請求時(shí)可以直接使用緩沖區(qū)。


 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")


查看完整回答
反對 回復(fù) 2023-07-04
?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊

最好的選擇是將 JSON 編組流式傳輸?shù)?gzip 編寫器:


func compressJSON(w io.Writer, i interface{}) error {

    gz := gzip.NewWriter(w)

    if err := json.NewEncoder(gz).Encode(i); err != nil {

        return err

    }

    return gz.Close()

}

這樣做的好處是不會(huì)暫時(shí)在內(nèi)存中緩沖 json,因此速度會(huì)更快并且使用更少的 RAM。


如果您需要將其作為io.Reader,例如 HTTP 請求的正文,則可以使用管道進(jìn)行轉(zhuǎn)換:


r, w := io.Pipe()

go func() {

    err := compressJSON(w, someObject)

    w.CloseWithError(err)

}()

req, err := http.NewRequest("POST", "http://example.com/", r)


查看完整回答
反對 回復(fù) 2023-07-04
  • 2 回答
  • 0 關(guān)注
  • 128 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號