NewtonsoftJsonSerializerProvider .cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Furion;
  2. using Furion.DependencyInjection;
  3. using Furion.JsonSerialization;
  4. using Microsoft.AspNetCore.Mvc;
  5. using Newtonsoft.Json;
  6. namespace Admin.NET.Core
  7. {
  8. /// <summary>
  9. /// 自定义序列化提供器Newtonsoft
  10. /// </summary>
  11. public class NewtonsoftJsonSerializerProvider : IJsonSerializerProvider, ISingleton
  12. {
  13. /// <summary>
  14. /// 序列化对象
  15. /// </summary>
  16. /// <param name="value"></param>
  17. /// <param name="jsonSerializerOptions"></param>
  18. /// <returns></returns>
  19. public string Serialize(object value, object jsonSerializerOptions = null)
  20. {
  21. return JsonConvert.SerializeObject(value, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);
  22. }
  23. /// <summary>
  24. /// 反序列化字符串
  25. /// </summary>
  26. /// <typeparam name="T"></typeparam>
  27. /// <param name="json"></param>
  28. /// <param name="jsonSerializerOptions"></param>
  29. /// <returns></returns>
  30. public T Deserialize<T>(string json, object jsonSerializerOptions = null)
  31. {
  32. return JsonConvert.DeserializeObject<T>(json, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);
  33. }
  34. /// <summary>
  35. /// 返回读取全局配置的 JSON 选项
  36. /// </summary>
  37. /// <returns></returns>
  38. public object GetSerializerOptions()
  39. {
  40. return App.GetOptions<MvcNewtonsoftJsonOptions>()?.SerializerSettings;
  41. }
  42. }
  43. }