1 回答

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
您不能只是將 JSON 文檔連接在一起,并期望結(jié)果是有效的 json 編碼。您必須將對象放在數(shù)組中,然后在最后輸出該數(shù)組一次,否則響應(yīng)將不是有效的 json。output
如果像代碼一樣單獨(dú)輸出對象,則最終數(shù)據(jù)將如下所示
{"MSG": "ok", "File": "...", "Skills": [...]}{"MSG": "ok", "File": "...", "Skills": [...]}{"MSG": "ok", "File": "...", "Skills": [...]}
這些輸出中的每一個(gè)本身都是有效的,但整個(gè)輸出(對象只是連接在一起)卻不是。
理想情況下,在將 json 輸出到像 HTTP 響應(yīng)這樣的流時(shí),不要將其存儲在中間緩沖區(qū) () 中,而是使用 http 響應(yīng)編寫器。流式處理幾乎總是比渲染到變量更好。datajson.NewEncoder(w)w
var outputs = make([]Output,0,len(files)
for i, file := range files {
uniqueSlice := unique(matches)
outputs = append(outputs, Output{MSG: "ok", File: file, Skills: uniqueSlice})
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
if err := json.NewEncoder(w).Encode(outputs); err != nil {
panic(err)
}
- 1 回答
- 0 關(guān)注
- 103 瀏覽
添加回答
舉報(bào)