【发布时间】:2018-11-12 19:09:24
【问题描述】:
使用 .NetCore...
我有一个 C# 服务器端代码。
它创建一个对象列表,如:
[Serializable]
public class MyObject
{
public string test { get; set;}
}
var manyOfTheseObjects = new List<MyObject>();
manyOfTheseObjects ~ add a few records
我现在转换为 ByteArray ~
var binFormatter = new BinaryFormatter();
var mStream = new MemoryStream();
binFormatter.Serialize(mStream, manyOfTheseObjects);
socket.Send(mStream.ToArray());
在 JavaScript 端,我正在监听网络套接字:
ws.onopen = function (data) {
try {
console.log("onopen");
console.log(JSON.parse(data).result);
$("#divConnectionStatus").html("Client connected");
resume= 1;}
catch (err) {
console.log(err);
$("#divConnectionStatus").html("onopen: " + err);
}
};
我得到错误:
SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at WebSocket.Connect.ws.onopen (LiveFeed.js:182)
我显然做错了……
注意
改变了这个:
var binFormatter = new BinaryFormatter();
var mStream = new MemoryStream();
binFormatter.Serialize(mStream, manyOfTheseObjects);
socket.Send(mStream.ToArray());
到这里:
socket.Send( JsonConvert.SerializeObject(manyOfTheseObjects ) );
【问题讨论】:
-
字节数组不一定是有效的 JSON。如果你想要 JSON,你可能应该使用
JsonConvert.SerializeObject()... -
只是把它改成了那个。同样的错误。将使用该代码更新我的问题
-
在您的
onopen处理程序中添加您在执行console.log(data)时获得的内容。 -
BinaryFormatter是一个特定于 .NET 的二进制序列化程序(坦率地说:我会避免使用它)——它不是 JSON。如果需要:使用 JSON 序列化程序。 -
与编辑;收到的有效载荷是什么?正如@HereticMonkey 所问:
console.log(data)是什么?
标签: javascript c# websocket