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

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

如何更改從 go 服務(wù)器返回?cái)?shù)據(jù)的格式而不存儲(chǔ)數(shù)據(jù)

如何更改從 go 服務(wù)器返回?cái)?shù)據(jù)的格式而不存儲(chǔ)數(shù)據(jù)

Go
神不在的星期二 2023-07-10 14:53:21
我正在對從通道獲取的每個(gè)搜索結(jié)果進(jìn)行編碼,然后將其發(fā)送到響應(yīng)編寫器,然后刷新它,但這會(huì)發(fā)送如下數(shù)據(jù):[{..}][{..}][{..}]this 作為具有單個(gè)值的多個(gè)數(shù)組但我要求發(fā)送數(shù)據(jù)的格式就像這樣 [{..},{..},{..}]一個(gè)具有多個(gè)值的單個(gè)數(shù)組。如果我之前將數(shù)據(jù)存儲(chǔ)在變量中,然后對整個(gè)數(shù)據(jù)進(jìn)行編碼,則可以完成此操作,但如果我存儲(chǔ)它,則運(yùn)行時(shí)內(nèi)存不足。有什么方法可以將其轉(zhuǎn)換為所需的格式而不存儲(chǔ)它或如何解決我的內(nèi)存問題。我在 4gb ram sles12 sp3 系統(tǒng)中運(yùn)行我的 go 服務(wù)器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貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊

一種選擇是手動(dòng)構(gòu)造外部 JSON 數(shù)組,使用如下內(nèi)容:


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


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

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

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


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

}()


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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