有没有一种简单的方法可以在c#中将messagepack转换为json?
所以我正在编写一个网络库,它使用neuecc messagepack通过套接字发送对象,有没有办法将其转换为JSON?我想这样做的原因是我有一个分裂的字符“;”我序列化到messagepack并将其添加到对象中,以在一个字节[]中分隔多个对象。有没有更好的方法来分离对象有没有一种简单的方法可以在c#中将messagepack转换为json?,c#,json,sockets,msgpack,C#,Json,Sockets,Msgpack,所以我正在编写一个网络库,它使用neuecc messagepack通过套接字发送对象,有没有办法将其转换为JSON?我想这样做的原因是我有一个分裂的字符“;”我序列化到messagepack并将其添加到对象中,以在一个字节[]中分隔多个对象。有没有更好的方法来分离对象 private void Recieve() { try { if (IsConnected && Connection.Available
private void Recieve()
{
try
{
if (IsConnected && Connection.Available > 0)
{
byte[] bytes = GetAllBytes();
if (bytes != null)
{
string json = ObjectParser.BytesToJson(bytes);
List<string> Sections = json.Split(new string[] { "\";\"" }, StringSplitOptions.None).Where(x => x != "" && x.Trim('"').Length > 0).ToList();
for (int i = 0; i < Sections.Count; i++)
{
string j = Sections[i];
byte[] b = ObjectParser.JsonToBytes(j);
if (ObjectParser.IsType<DisconnectionContext>(b))
{
DisconnectionContext ctx = ObjectParser.BytesToObject<DisconnectionContext>(b);
DisconnectedFrom(ctx);
return;
}
else
{
lock (LockObject)
ObjectQueue.Add(b);
}
}
}
}
}
catch (SocketException)
{
Running = false;
DisconnectedFrom(new DisconnectionContext() { type = DisconnectionContext.DisconnectionType.FORCIBLE });
}
catch (ObjectDisposedException) { }
}
private byte[] GetAllBytes()
{
List<byte> FullObject = new List<byte>();
bool CompleteObject = false;
while (!CompleteObject && Running)
{
while (Connection.Available == 0) ;
byte[] bytes = new byte[Connection.Available];
int RecievedBytes = Connection.Receive(bytes);
try
{
string json = ObjectParser.BytesToJson(bytes);
if (json.Trim('"') != "")
{
if (RecievedBytes < 65536) CompleteObject = true;
FullObject.AddRange(bytes);
}
else if (FullObject.Count == 0)
{
CompleteObject = true;
}
}
catch(Exception ex)
{
FullObject.AddRange(bytes);
}
}
return FullObject.ToArray();
}
private void receive()
{
尝试
{
如果(断开连接和连接。可用>0)
{
字节[]字节=GetAllBytes();
如果(字节数!=null)
{
字符串json=ObjectParser.BytesToJson(字节);
List Sections=json.Split(新字符串[]{“\”;\”“},StringSplitOptions.None)。其中(x=>x!=”“&&x.Trim(“”)。长度>0)。ToList();
对于(int i=0;i