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, "]")
或者,还有更好的方法?
解决方案
如果您已经拥有内存中的所有对象,则对元素进行逐个编码是没有意义的,您可以这样做:
enc.Encode(lotsOfObjs)
如果您一个一个地获取对象,那么手动添加 [ 和 ] 并在其间添加逗号就可以了。
推荐阅读
- javascript - 复选框 onchanged 未在反应中更新
- shell - Bash 将内容插入到第 n 个 html 标记中
- node.js - 如何从firebase函数获得对firebase静态index.html的响应
- php - 使用 PHP 邮件程序发送带有附件的邮件时出错:事务失败:缺少起始边界 SMTP 代码:554
- python - 虚拟环境中的 SonarScanner
- reactjs - 我收到 TypeError: this is undefined 即使在构造函数中使用 this.handleChange = this.handleChange.bind(this)
- c# - 如何修复使用 C# 中 V4 SDK 开发的聊天机器人窗口中未显示 DirectLineChannel 提示选择选项的相关问题?
- firebase - “ Cloud Firestore Override a deprecated API” 构建颤振应用程序时发生错误
- hangfire - Hangfire 正在停止,日志捕获停止信号
- cmd - Mysql5.5.x 版本安装正确但其服务未使用命令提示符启动