using System.IO; using Newtonsoft.Json; using RestSharp.Serializers; using RestSharp.Deserializers; namespace HabitSharp.Serialization { public class NewtonsoftJsonSerializer : ISerializer, IDeserializer { private Newtonsoft.Json.JsonSerializer serializer; public NewtonsoftJsonSerializer(Newtonsoft.Json.JsonSerializer serializer) => this.serializer = serializer; public string ContentType { get => "application/json"; set { } } public string DateFormat { get; set; } public string Namespace { get; set; } public string RootElement { get; set; } public string Serialize(object obj) { using (var stringWriter = new StringWriter()) { using (var jsonTextWriter = new JsonTextWriter(stringWriter)) { serializer.Serialize(jsonTextWriter, obj); return stringWriter.ToString(); } } } public T Deserialize(RestSharp.IRestResponse response) { using (var stringReader = new StringReader(response.Content)) { using (var jsonTextReader = new JsonTextReader(stringReader)) { return serializer.Deserialize(jsonTextReader); } } } public static NewtonsoftJsonSerializer Default => new NewtonsoftJsonSerializer(new Newtonsoft.Json.JsonSerializer() { NullValueHandling = NullValueHandling.Ignore, }); } }