心有法竹
将附加信息、代理和右括号写入响应: io.WriteString(w, "{") io.WriteString(w, AdditionalInfo) json.NewEncoder(w).Encode(AllAgents) io.WriteString(w, "]}") // closing ] for data and closing } for root[ ]请注意,这对代理进行了两个级别的编码。目前还不清楚这是否是您想要的。另一种方法是创建一个与输出结构匹配的 Go 值并对其进行编码:v := map[string]interface{}{ "meta": map[string]interface{}{ "page": 1, "pages": 1, "perpage": -1, "total": 350, "sort": "asc", "field": "RecordID", }, "data": AllAgents, } if err := json.NewEncoder(w).Encode(v); err != nil { // handle error }同样,不清楚您希望在代理周围嵌套多少。您可能需要这种变化:v := map[string]interface{}{ "meta": map[string]interface{}{ "page": 1, "pages": 1, "perpage": -1, "total": 350, "sort": "asc", "field": "RecordID", }, "data": []interface{}{AllAgents}, } if err := json.NewEncoder(w).Encode(v); err != nil { // handle error }回复:效率创建最终大小的切片通常比使用append. 通过使用指针切片[]*SingleAgent而不是结构值切片可能会获得一些效率[]SingleAgent。