NewtonsoftJsonSerializerProvider.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // 此源代码遵循位于源代码树根目录中的 LICENSE 文件的许可证。
  2. //
  3. // 必须在法律法规允许的范围内正确使用,严禁将其用于非法、欺诈、恶意或侵犯他人合法权益的目的。
  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. }