繁体   English   中英

Golang 后端到 javascript JSON Parse

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM