lucidiot/HabitSharp
lucidiot
/
HabitSharp
Archived
1
0
Fork 0
This repository has been archived on 2022-08-04. You can view files and clone it, but cannot push or open issues or pull requests.
HabitSharp/Serialization/NewtonsoftJsonSerializer.cs

53 lines
1.6 KiB
C#

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<T>(RestSharp.IRestResponse response)
{
using (var stringReader = new StringReader(response.Content))
{
using (var jsonTextReader = new JsonTextReader(stringReader))
{
return serializer.Deserialize<T>(jsonTextReader);
}
}
}
public static NewtonsoftJsonSerializer Default =>
new NewtonsoftJsonSerializer(new Newtonsoft.Json.JsonSerializer() {
NullValueHandling = NullValueHandling.Ignore,
});
}
}