| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | using System;using InABox.Core;using Newtonsoft.Json;namespace InABox.Serialization{    public class JsonSerializer : ISerializer<string>    {        public TType Deserialize<TType>(string data) // where TType : BaseObject, new()        {            var serializerSettings = new JsonSerializerSettings            {                DateParseHandling = DateParseHandling.DateTime,                DateFormatHandling = DateFormatHandling.IsoDateFormat,                DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind            };            serializerSettings.Converters.Add(new DataTableJsonConverter());            //serializerSettings.Converters.Add(new DateTimeJsonConverter());            serializerSettings.Converters.Add(new FilterJsonConverter());            serializerSettings.Converters.Add(new ColumnJsonConverter());            serializerSettings.Converters.Add(new SortOrderJsonConverter());            serializerSettings.Converters.Add(new UserPropertiesJsonConverter());            var ret = default(TType);            try            {                ret = JsonConvert.DeserializeObject<TType>(data, serializerSettings);            }            catch            {                if (typeof(TType).IsArray)                {                    object o = Array.CreateInstance(typeof(TType).GetElementType(), 0);                    ret = (TType)o;                }                else                {                    Activator.CreateInstance<TType>();                }            }            return ret;        }        public string Serialize<TType>(TType o) // where TType : BaseObject, new()        {            var serializerSettings = new JsonSerializerSettings            {                DateParseHandling = DateParseHandling.DateTime,                DateFormatHandling = DateFormatHandling.IsoDateFormat,                DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind            };            serializerSettings.Converters.Add(new DataTableJsonConverter());            //serializerSettings.Converters.Add(new DateTimeJsonConverter());            serializerSettings.Converters.Add(new FilterJsonConverter());            serializerSettings.Converters.Add(new ColumnJsonConverter());            serializerSettings.Converters.Add(new SortOrderJsonConverter());            serializerSettings.Converters.Add(new UserPropertiesJsonConverter());            var json = JsonConvert.SerializeObject(o, Formatting.None, serializerSettings);            return json;        }    }}
 |