Procházet zdrojové kódy

JsondotnetPacker 二进制序列化改成bson

tanghai před 8 roky
rodič
revize
87ef2a3258

+ 34 - 6
Unity/Assets/Scripts/Base/Message/JsondotnetPacker.cs

@@ -1,13 +1,21 @@
 using System;
+using System.IO;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Bson;
 
 namespace Model
 {
-	public class JsondotnetPacker: IMessagePacker
+	public class JsondotnetPacker : IMessagePacker
 	{
 		public byte[] SerializeToByteArray(object obj)
 		{
-			return JsonConvert.SerializeObject(obj).ToByteArray();
+			using (MemoryStream ms = new MemoryStream())
+			using (BsonWriter writer = new BsonWriter(ms))
+			{
+				JsonSerializer serializer = new JsonSerializer();
+				serializer.Serialize(writer, obj);
+				return ms.ToArray();
+			}
 		}
 
 		public string SerializeToText(object obj)
@@ -17,22 +25,42 @@ namespace Model
 
 		public object DeserializeFrom(Type type, byte[] bytes)
 		{
-			return JsonConvert.DeserializeObject(bytes.ToStr(), type);
+			using (MemoryStream ms = new MemoryStream(bytes))
+			using (BsonReader reader = new BsonReader(ms))
+			{
+				JsonSerializer serializer = new JsonSerializer();
+				return serializer.Deserialize(reader, type);
+			}
 		}
 
 		public object DeserializeFrom(Type type, byte[] bytes, int index, int count)
 		{
-			return JsonConvert.DeserializeObject(bytes.ToStr(index, count), type);
+			using (MemoryStream ms = new MemoryStream(bytes, index, count))
+			using (BsonReader reader = new BsonReader(ms))
+			{
+				JsonSerializer serializer = new JsonSerializer();
+				return serializer.Deserialize(reader, type);
+			}
 		}
 
 		public T DeserializeFrom<T>(byte[] bytes)
 		{
-			return JsonConvert.DeserializeObject<T>(bytes.ToStr());
+			using (MemoryStream ms = new MemoryStream(bytes))
+			using (BsonReader reader = new BsonReader(ms))
+			{
+				JsonSerializer serializer = new JsonSerializer();
+				return serializer.Deserialize<T>(reader);
+			}
 		}
 
 		public T DeserializeFrom<T>(byte[] bytes, int index, int count)
 		{
-			return JsonConvert.DeserializeObject<T>(bytes.ToStr(index, count));
+			using (MemoryStream ms = new MemoryStream(bytes, index, count))
+			using (BsonReader reader = new BsonReader(ms))
+			{
+				JsonSerializer serializer = new JsonSerializer();
+				return serializer.Deserialize<T>(reader);
+			}
 		}
 
 		public T DeserializeFrom<T>(string str)

+ 1 - 6
Unity/Unity.sln

@@ -1,8 +1,6 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26730.10
-MinimumVisualStudioVersion = 10.0.40219.1
+# Visual Studio 2017
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Plugins", "Unity.Plugins.csproj", "{D1FDB199-0FB7-099D-3771-C6A942E4E326}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity", "Unity.csproj", "{CF118143-7E37-744F-BE45-3F55345FEC40}"
@@ -37,7 +35,4 @@ Global
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {EE0E0462-777D-4764-8DA0-BEB1C84A1E4C}
-	EndGlobalSection
 EndGlobal