JsonSerializerProvider.cs 1.7 KB

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