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

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

將 HTTP 響應(yīng)正文寫入文件后出現(xiàn) EOF 錯誤

將 HTTP 響應(yīng)正文寫入文件后出現(xiàn) EOF 錯誤

Go
慕尼黑的夜晚無繁華 2023-03-21 17:26:33
我想在解析之前將 JSON 響應(yīng)保存到文本文件:req, err := http.NewRequest("POST", url, body)req.Header.Set("Authorization", "secret_key")req.Header.Set("Content-Type", "application/json")resp, err := client.Do(req)if err != nil {    log.Fatal(err)}defer resp.Body.Close()f, err := os.Create("./response.json")if err != nil {    log.Fatal(err)}defer f.Close()io.Copy(f, resp.Body)var result JSONResultif err := json.NewDecoder(resp.Body).Decode(&result); err != nil {    log.Fatal(err)}它成功地將 JSON 寫入文件,但隨后在解碼步驟中失敗,并出現(xiàn)一個錯誤,即EOF. 如果我在寫入文件之前解析它解析正常,但文件為空。有人可以解釋這里發(fā)生了什么嗎?謝謝!
查看完整描述

1 回答

?
波斯汪

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

http.Response.Body是 類型io.ReadCloser,只能讀取一次(如您所見,它沒有倒帶方法)。

因此,或者出于解碼目的,您可以讀取剛剛創(chuàng)建的文件。

或者,如果響應(yīng)不大(或者您可以使用 對其進(jìn)行修剪io.LimitReader)- 您可以將其讀入緩沖區(qū)

(未經(jīng)測試,類似這些):

f, err := os.Create("./response.json")

if err != nil {

    log.Fatal(err)

}

defer f.Close()


var buf bytes.Buffer

tee := io.TeeReader(r.Body, &buf)


io.Copy(f, tee)


var result JSONResult

if err := json.NewDecoder(buf).Decode(&result); err != nil {

    log.Fatal(err)

}


查看完整回答
反對 回復(fù) 2023-03-21
  • 1 回答
  • 0 關(guān)注
  • 339 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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