亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何更改從 go 服務器返回數據的格式而不存儲數據

如何更改從 go 服務器返回數據的格式而不存儲數據

Go
神不在的星期二 2023-07-10 14:53:21
我正在對從通道獲取的每個搜索結果進行編碼,然后將其發送到響應編寫器,然后刷新它,但這會發送如下數據:[{..}][{..}][{..}]this 作為具有單個值的多個數組但我要求發送數據的格式就像這樣 [{..},{..},{..}]一個具有多個值的單個數組。如果我之前將數據存儲在變量中,然后對整個數據進行編碼,則可以完成此操作,但如果我存儲它,則運行時內存不足。有什么方法可以將其轉換為所需的格式而不存儲它或如何解決我的內存問題。我在 4gb ram sles12 sp3 系統中運行我的 go 服務器ch := make(chan *ldap.SearchResult)//result := &ldap.SearchResult{}flusher, ok := w.(http.Flusher)if !ok {    http.Error(w, "Streaming unsupported!", http.StatusInternalServerError)    return}wg := sync.WaitGroup{}wg.Add(1)go func() {    for res := range ch {        resp := SearchResultToObjectType(res)        json.NewEncoder(w).Encode(resp)        flusher.Flush()        //result.Entries = append(result.Entries, res.Entries...)        //result.Controls = append(result.Controls, res.Controls...)        //result.Referrals = append(result.Referrals, res.Referrals...)    }    wg.Done()}()err = conn.SearchWithChannel(searchRequest, ch)wg.Wait()if err != nil {    json.NewEncoder(w).Encode(utils.ParseErrorToJson(err))    event.LogEventError(err, nil)}
查看完整描述

2 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

一種選擇是手動構造外部 JSON 數組,使用如下內容:


first := true

w.Write([]byte("["))

for res := range ch {

    if not first {

        w.Write([]byte(","))

    }

    first = false

    ...

    json.NewEncoder(w).Encode(resp)

    ...

}

w.Write([]byte("]"))


查看完整回答
反對 回復 2023-07-10
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

假設這resp是一個包含單個元素的切片,則使用以下代碼。該代碼將切片元素包裝在單個 JSON 數組中。


go func() {

    enc := json.NewEncoder(w)

    sep := []byte("")

    comma := []byte(",")

    w.Write([]byte("[")

    for res := range ch {

        w.Write(sep)

        sep = comma

        resp := SearchResultToObjectType(res)

        enc.Encode(resp[0])

        flusher.Flush()    

    }

    w.Write([]byte("]")

    wg.Done()

}()


查看完整回答
反對 回復 2023-07-10
  • 2 回答
  • 0 關注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號