Json.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Converters;
  3. using System;
  4. using System.IO;
  5. using System.Text;
  6. namespace DaJiaoYan.Utils
  7. {
  8. internal class Json
  9. {
  10. private static readonly JavaScriptDateTimeConverter JavaScriptDateTimeConverter = new JavaScriptDateTimeConverter();
  11. /// <summary>
  12. /// json格式解码
  13. /// </summary>
  14. /// <typeparam name="T"></typeparam>
  15. /// <param name="stream"></param>
  16. /// <returns></returns>
  17. public static T Decode<T>(Stream stream)
  18. {
  19. JsonSerializer serializer = new JsonSerializer();
  20. serializer.Converters.Add(JavaScriptDateTimeConverter);//指定转化日期的格式
  21. using (StreamReader sr = new StreamReader(stream, Encoding.UTF8))
  22. using (JsonReader reader = new JsonTextReader(sr))
  23. {
  24. return serializer.Deserialize<T>(reader);
  25. }
  26. }
  27. /// <summary>
  28. /// json格式解码
  29. /// </summary>
  30. /// <typeparam name="T"></typeparam>
  31. /// <param name="txt"></param>
  32. /// <returns></returns>
  33. public static T Decode<T>(string txt)
  34. {
  35. JsonSerializer serializer = new JsonSerializer();
  36. serializer.Converters.Add(JavaScriptDateTimeConverter);//指定转化日期的格式
  37. using (StringReader sr = new StringReader(txt))
  38. using (JsonReader reader = new JsonTextReader(sr))
  39. {
  40. T res = default;
  41. try
  42. {
  43. res = serializer.Deserialize<T>(reader);
  44. }
  45. catch (Exception ex)
  46. {
  47. Console.WriteLine(ex.Message);
  48. }
  49. return res;
  50. }
  51. }
  52. /// <summary>
  53. /// json格式编码
  54. /// </summary>
  55. /// <param name="obj"></param>
  56. /// <returns></returns>
  57. public static string Encode(object obj)
  58. {
  59. return JsonConvert.SerializeObject(obj, JavaScriptDateTimeConverter);
  60. }
  61. }
  62. }