首页 > 解决方案 > 将json数组编码到客户端

问题描述

我有与这个问题相反的问题。

解码大流 JSON

在该问题中,用户询问有关解码大型传入 JSON 数组的问题。

但是,我将如何编码一个大的传出 JSON 数组?

例如,我有一个http.Handler这样的。

enc := json.NewEncoder(resp)
for obj := range objectChannel {
    enc.Encode(obj)
}

但是,这不起作用,因为它最终会向 JavaScript 客户端发送无效的 JSON。

我必须手动修复语法吗?例如:

enc := json.NewEncoder(resp)
fmt.Fprint(resp, "[")
for obj := range objectChannel {
    enc.Encode(obj)
    fmt.Fprint(resp, ",") // and account for the last item
}
fmt.Fprint(resp, "]")

或者,还有更好的方法?

标签: jsongo

解决方案


如果您已经拥有内存中的所有对象,则对元素进行逐个编码是没有意义的,您可以这样做:

enc.Encode(lotsOfObjs)

如果您一个一个地获取对象,那么手动添加 [ 和 ] 并在其间添加逗号就可以了。


推荐阅读