Golang后端到javascript JSON解析

Golang后端到javascript JSON解析,javascript,json,go,websocket,Javascript,Json,Go,Websocket,我正在使用golang的gorilla websocket库: 这是我用来创建websocket连接的代码: conn, err := upgrader.Upgrade(w, r, nil) 从golang向javascript发送JSON时出现问题。我可以让它工作,但必须做什么似乎是不必要的步骤。以下是golang后端无法工作的基本情况: type clientDB struct{ ChunksWritten int64 ChunksRead in

我正在使用golang的gorilla 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);
Eyjdahvua3nxCml0dgVuijowlcjxRlc1dyaxr0zw4ioju0ndgxlcjCexRlc1ywqiojc4nxCnxCl0dgVuijowlcjyxRhqnl0zNszwkKijowlc3rpdmvqzwyc6mcwg90ywqzwyvyycyc6ndmSilrjLnjLnjlyyyx3nyx3ny3ny3ny3nzzzzzzzzzyzyzy3nzyzyzy5nzyzyzy5nzy5nzy5nzyzyzyzyzyzyzyzyzyzyzyz

我可以通过以下更改使其正常工作:

conn.WriteJSON(string(b))
然后在javascript中,我实际解析了两次数据

var clientUpdate = JSON.parse(evt.data);
var clientUpdateJSON = JSON.parse(clientUpdate);
之后,我可以作为JSON对象正确访问数据。通过websocket将golang中的JSON对象发送到javascript中,我有什么遗漏吗?

gorilla websocket会自动编码为JSON,因此使用标准库编码也只是编码了两次,导致它显示为base64


谢谢大家

您正在对数据进行
base64
编码。你在base64解码后发布的字符串是
{“ChunksWrited”:0,“ChunksRead”:0,“BytesWrited”:54481,“BytesRead”:78782,“DatabytesWrited”:0,“DataBytesRead”:0,“ActivePeers”:0,“TotalPeers”:43,“TorrentHashString”:“9F9165D9A281A9E782CD5176BBCC8256FD1871”
我不知道什么类型的
conn
WriteJSON方法,但看起来您正在获取一个已经是JSON的片段,并将其再次编码为JSON,这可能不是您想要做的。抱歉,忘记添加我正在使用的库:这是在创建连接:
conn,err:=upgrader.Upgrade(w,r,nil)
然后只使用
WriteJSON
JSON.marshall
;您不需要对它进行两次编码。@RayfenWindspear:base64是
[]字节的默认json编码格式