JsonSerializer.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using System;
  2. using System.IO;
  3. namespace MediaBrowser.Common.Serialization
  4. {
  5. /// <summary>
  6. /// Provides a wrapper around third party json serialization.
  7. /// </summary>
  8. public class JsonSerializer
  9. {
  10. public static void SerializeToStream<T>(T obj, Stream stream)
  11. {
  12. Configure();
  13. ServiceStack.Text.JsonSerializer.SerializeToStream(obj, stream);
  14. }
  15. public static void SerializeToFile<T>(T obj, string file)
  16. {
  17. Configure();
  18. using (Stream stream = File.Open(file, FileMode.Create))
  19. {
  20. ServiceStack.Text.JsonSerializer.SerializeToStream(obj, stream);
  21. }
  22. }
  23. public static object DeserializeFromFile(Type type, string file)
  24. {
  25. Configure();
  26. using (Stream stream = File.OpenRead(file))
  27. {
  28. return ServiceStack.Text.JsonSerializer.DeserializeFromStream(type, stream);
  29. }
  30. }
  31. public static T DeserializeFromFile<T>(string file)
  32. {
  33. Configure();
  34. using (Stream stream = File.OpenRead(file))
  35. {
  36. return ServiceStack.Text.JsonSerializer.DeserializeFromStream<T>(stream);
  37. }
  38. }
  39. public static T DeserializeFromStream<T>(Stream stream)
  40. {
  41. Configure();
  42. return ServiceStack.Text.JsonSerializer.DeserializeFromStream<T>(stream);
  43. }
  44. public static object DeserializeFromStream(Stream stream, Type type)
  45. {
  46. Configure();
  47. return ServiceStack.Text.JsonSerializer.DeserializeFromStream(type, stream);
  48. }
  49. private static bool _isConfigured;
  50. private static void Configure()
  51. {
  52. if (!_isConfigured)
  53. {
  54. ServiceStack.Text.JsConfig.DateHandler = ServiceStack.Text.JsonDateHandler.ISO8601;
  55. ServiceStack.Text.JsConfig.ExcludeTypeInfo = true;
  56. ServiceStack.Text.JsConfig.IncludeNullValues = false;
  57. _isConfigured = true;
  58. }
  59. }
  60. }
  61. }