53 lines
1.6 KiB
C#
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,
|
|
});
|
|
}
|
|
}
|