JsondotnetPacker.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System;
  2. using System.IO;
  3. using Newtonsoft.Json;
  4. using Newtonsoft.Json.Bson;
  5. namespace Model
  6. {
  7. public class JsondotnetPacker : IMessagePacker
  8. {
  9. public byte[] SerializeToByteArray(object obj)
  10. {
  11. using (MemoryStream ms = new MemoryStream())
  12. using (BsonWriter writer = new BsonWriter(ms))
  13. {
  14. JsonSerializer serializer = new JsonSerializer();
  15. serializer.Serialize(writer, obj);
  16. return ms.ToArray();
  17. }
  18. }
  19. public string SerializeToText(object obj)
  20. {
  21. return JsonConvert.SerializeObject(obj);
  22. }
  23. public object DeserializeFrom(Type type, byte[] bytes)
  24. {
  25. using (MemoryStream ms = new MemoryStream(bytes))
  26. using (BsonReader reader = new BsonReader(ms))
  27. {
  28. JsonSerializer serializer = new JsonSerializer();
  29. return serializer.Deserialize(reader, type);
  30. }
  31. }
  32. public object DeserializeFrom(Type type, byte[] bytes, int index, int count)
  33. {
  34. using (MemoryStream ms = new MemoryStream(bytes, index, count))
  35. using (BsonReader reader = new BsonReader(ms))
  36. {
  37. JsonSerializer serializer = new JsonSerializer();
  38. return serializer.Deserialize(reader, type);
  39. }
  40. }
  41. public T DeserializeFrom<T>(byte[] bytes)
  42. {
  43. using (MemoryStream ms = new MemoryStream(bytes))
  44. using (BsonReader reader = new BsonReader(ms))
  45. {
  46. JsonSerializer serializer = new JsonSerializer();
  47. return serializer.Deserialize<T>(reader);
  48. }
  49. }
  50. public T DeserializeFrom<T>(byte[] bytes, int index, int count)
  51. {
  52. using (MemoryStream ms = new MemoryStream(bytes, index, count))
  53. using (BsonReader reader = new BsonReader(ms))
  54. {
  55. JsonSerializer serializer = new JsonSerializer();
  56. return serializer.Deserialize<T>(reader);
  57. }
  58. }
  59. public T DeserializeFrom<T>(string str)
  60. {
  61. return JsonConvert.DeserializeObject<T>(str);
  62. }
  63. public object DeserializeFrom(Type type, string str)
  64. {
  65. return JsonConvert.DeserializeObject(str);
  66. }
  67. }
  68. }