52 lines
1.3 KiB
C#
52 lines
1.3 KiB
C#
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Converters;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace PocketSharp
|
|
{
|
|
|
|
public class BoolConverter : JsonConverter
|
|
{
|
|
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
|
{
|
|
writer.WriteValue(((bool)value) ? 1 : 0);
|
|
}
|
|
|
|
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
|
{
|
|
return reader.Value.ToString() == "1";
|
|
}
|
|
|
|
public override bool CanConvert(Type objectType)
|
|
{
|
|
return objectType == typeof(bool);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public class UnixDateTimeConverter : DateTimeConverterBase
|
|
{
|
|
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
|
{
|
|
DateTime epoc = new DateTime(1970, 1, 1);
|
|
var delta = (DateTime)value - epoc;
|
|
|
|
writer.WriteValue((long)delta.TotalSeconds);
|
|
}
|
|
|
|
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
|
{
|
|
if(reader.Value.ToString() == "0")
|
|
{
|
|
return null;
|
|
}
|
|
|
|
return new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Convert.ToDouble(reader.Value)).ToLocalTime();
|
|
}
|
|
}
|
|
}
|