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;
- }
- }
- }
|