JsonSerializerProvider.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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. /// 返回读取全局配置的 JSON 选项
  30. /// </summary>
  31. /// <returns></returns>
  32. public object GetSerializerOptions()
  33. {
  34. return App.GetOptions<MvcNewtonsoftJsonOptions>()?.SerializerSettings;
  35. }
  36. }