1 回答
TA贡献1859条经验 获得超6个赞
您不能只是将 JSON 文档连接在一起,并期望结果是有效的 json 编码。您必须将对象放在数组中,然后在最后输出该数组一次,否则响应将不是有效的 json。output
如果像代码一样单独输出对象,则最终数据将如下所示
{"MSG": "ok", "File": "...", "Skills": [...]}{"MSG": "ok", "File": "...", "Skills": [...]}{"MSG": "ok", "File": "...", "Skills": [...]}
这些输出中的每一个本身都是有效的,但整个输出(对象只是连接在一起)却不是。
理想情况下,在将 json 输出到像 HTTP 响应这样的流时,不要将其存储在中间缓冲区 () 中,而是使用 http 响应编写器。流式处理几乎总是比渲染到变量更好。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 关注
- 143 浏览
添加回答
举报
