Golang后端到javascript JSON解析
我正在使用golang的gorilla websocket库: 这是我用来创建websocket连接的代码: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
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编码格式