Golang后端到javascript JSON Parse

时间:2017-09-26 20:59:27

标签: javascript json go websocket

我正在使用goor的gorilla websocket库:http://www.gorillatoolkit.org/pkg/websocket

这是我用来创建websocket连接的代码:

conn, err := upgrader.Upgrade(w, r, nil)

从golang向javascript发送JSON时遇到问题。我可以让它工作,但必须做似乎不必要的步骤。以下是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中我实际解析数据TWICE。

var clientUpdate = JSON.parse(evt.data);
var clientUpdateJSON = JSON.parse(clientUpdate);

之后,我可以作为JSON对象正确访问数据。我是否缺少一些关于通过websockets从golang发送JSON对象到javascript的东西?

1 个答案:

答案 0 :(得分:1)

gorilla websocket package自动编码为JSON,因此使用标准库进行编码只是编码两次,导致它显示为base64。

谢谢你们!