NewtonsoftJsonSerializerProvider.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // 大名科技(天津)有限公司版权所有 电话:18020030720 QQ:515096995
  2. //
  3. // 此源代码遵循位于源代码树根目录中的 LICENSE 文件的许可证
  4. using Newtonsoft.Json;
  5. namespace Admin.NET.Core;
  6. /// <summary>
  7. /// 自定义序列化提供器 Newtonsoft.Json 实现
  8. /// </summary>
  9. public class NewtonsoftJsonSerializerProvider : IJsonSerializerProvider, ISingleton
  10. {
  11. /// <summary>
  12. /// 序列化对象
  13. /// </summary>
  14. /// <param name="value"></param>
  15. /// <param name="jsonSerializerOptions"></param>
  16. /// <returns></returns>
  17. public string Serialize(object value, object jsonSerializerOptions = null)
  18. {
  19. return JsonConvert.SerializeObject(value, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);
  20. }
  21. /// <summary>
  22. /// 反序列化字符串
  23. /// </summary>
  24. /// <typeparam name="T"></typeparam>
  25. /// <param name="json"></param>
  26. /// <param name="jsonSerializerOptions"></param>
  27. /// <returns></returns>
  28. public T Deserialize<T>(string json, object jsonSerializerOptions = null)
  29. {
  30. return JsonConvert.DeserializeObject<T>(json, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);
  31. }
  32. /// <summary>
  33. /// 反序列化字符串
  34. /// </summary>
  35. /// <param name="json"></param>
  36. /// <param name="returnType"></param>
  37. /// <param name="jsonSerializerOptions"></param>
  38. /// <returns></returns>
  39. public object Deserialize(string json, Type returnType, object jsonSerializerOptions = null)
  40. {
  41. return JsonConvert.DeserializeObject(json, returnType, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);
  42. }
  43. /// <summary>
  44. /// 返回读取全局配置的 JSON 选项
  45. /// </summary>
  46. /// <returns></returns>
  47. public object GetSerializerOptions()
  48. {
  49. return App.GetOptions<MvcNewtonsoftJsonOptions>()?.SerializerSettings;
  50. }
  51. }