[英]Golang backend to javascript JSON Parse
我正在使用 golang 的 gorilla websocket 库: http : //www.gorillatoolkit.org/pkg/websocket
这是我用来创建 websocket 连接的代码:
conn, err := upgrader.Upgrade(w, r, nil)
将 JSON 从 golang 发送到 javascript 时遇到问题。 我可以让它工作,但必须做一些似乎不必要的步骤。 以下是不起作用的 golang 后端的基础知识:
type clientDB struct{
ChunksWritten int64
ChunksRead int64
BytesWritten int64
BytesRead int64
DataBytesWritten int64
DataBytesRead int64
ActivePeers int
TotalPeers int
TorrentHashString string
}
fullClientDB := new(clientDB) //creating a new clientDB struct
b, err := json.Marshal(fullClientDB)
if err != nil {
fmt.Println(err)
return
}
conn.WriteJSON(b)
当我在 javascript 中使用 JSON.parse 时,我得到以下响应:
var clientUpdate = JSON.parse(evt.data);
eyJDaHVua3NXcml0dGVuIjowLCJDaHVua3NSZWFkIjowLCJCeXRlc1dyaXR0ZW4iOjU0NDgxLCJCeXRlc1JlYWQiOjc4NzgyLCJEYXRhQnl0ZXNXcml0dGVuIjowLCJEYXRhQnl0ZXNSZWFkIjowLCJBY3RpdmVQZWVycyI6MCwiVG90YWxQZWVycyI6NDMsIlRvcnJlbnRIYXNoU3RyaW5nIjoiOWY5MTY1ZDlhMjgxYTliOGU3ODJjZDUxNzZiYmNjODI1NmZkMTg3MSJ9
我可以通过以下更改使其正常工作:
conn.WriteJSON(string(b))
然后在 javascript 中,我实际上将数据解析了两次。
var clientUpdate = JSON.parse(evt.data);
var clientUpdateJSON = JSON.parse(clientUpdate);
之后,我可以将数据作为 JSON 对象正确访问。 关于通过 websockets 将 JSON 对象从 golang 发送到 javascript 有什么我遗漏的吗?
gorilla websocket包会自动编码为 JSON,因此使用标准库进行编码也只是对其进行了两次编码,导致它显示为 base64。
谢谢你们!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.