diff --git a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/JSONTimeZoneConverter.cs b/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/JSONTimeZoneConverter.cs index 8a5658788..1ae4adfd2 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/JSONTimeZoneConverter.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/JSONTimeZoneConverter.cs @@ -124,4 +124,75 @@ namespace IRaCIS.Core.API } } + + + + #region 废弃 + + public class MyDateTimeConverter : JsonConverter + { + public override DateTime ReadJson(JsonReader reader, Type objectType, DateTime existingValue, bool hasExistingValue, JsonSerializer serializer) + { + return reader.ReadAsDateTime().Value; + } + + public override void WriteJson(JsonWriter writer, DateTime value, JsonSerializer serializer) + { + var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + + string dateFormat; + if (!isEn_US) + { + // Chinese date format + dateFormat = "yyyy-MM-dd HH:mm:ss"; + } + else + { + // Default or English date format + dateFormat = "MM/dd/yyyy HH:mm:ss"; + } + + writer.WriteValue(value.ToString(dateFormat)); + + } + } + + public class MyNullableDateTimeConverter : JsonConverter + { + public override DateTime? ReadJson(JsonReader reader, Type objectType, DateTime? existingValue, bool hasExistingValue, JsonSerializer serializer) + { + var val = reader.ReadAsDateTime(); + return val; + } + + public override void WriteJson(JsonWriter writer, DateTime? value, JsonSerializer serializer) + { + var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + + string dateFormat; + if (!isEn_US) + { + // Chinese date format + dateFormat = "yyyy-MM-dd HH:mm:ss"; + } + else + { + // Default or English date format + dateFormat = "MM/dd/yyyy HH:mm:ss"; + } + + if (value.HasValue) + { + writer.WriteValue(value.Value.ToString(dateFormat)); + + } + else + { + writer.WriteValue(default(DateTime?)); + } + + } + } + + #endregion } diff --git a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/MyDateTimeConverter.cs b/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/MyDateTimeConverter.cs deleted file mode 100644 index 9a37b144f..000000000 --- a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/MyDateTimeConverter.cs +++ /dev/null @@ -1,96 +0,0 @@ -using IRaCIS.Core.Domain.Share; -using Newtonsoft.Json; -using System; -using System.Globalization; - -namespace IRaCIS.Core.API -{ - - - //public class CustomContractResolver : DefaultContractResolver - //{ - // protected override JsonContract CreateContract(Type objectType) - // { - // var contract = base.CreateContract(objectType); - - // // 检查类是否有 LowercaseJsonAttribute 标记 - // if (objectType.GetCustomAttribute() != null) - // { - // contract.NamingStrategy = new IRCCamelCaseNamingStrategy(); - // } - - // return contract; - // } - //} - - - - #region 废弃 - - public class MyDateTimeConverter : JsonConverter - { - public override DateTime ReadJson(JsonReader reader, Type objectType, DateTime existingValue, bool hasExistingValue, JsonSerializer serializer) - { - return reader.ReadAsDateTime().Value; - } - - public override void WriteJson(JsonWriter writer, DateTime value, JsonSerializer serializer) - { - var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; - - string dateFormat; - if (!isEn_US) - { - // Chinese date format - dateFormat = "yyyy-MM-dd HH:mm:ss"; - } - else - { - // Default or English date format - dateFormat = "MM/dd/yyyy HH:mm:ss"; - } - - writer.WriteValue(value.ToString(dateFormat)); - - } - } - - public class MyNullableDateTimeConverter : JsonConverter - { - public override DateTime? ReadJson(JsonReader reader, Type objectType, DateTime? existingValue, bool hasExistingValue, JsonSerializer serializer) - { - var val = reader.ReadAsDateTime(); - return val; - } - - public override void WriteJson(JsonWriter writer, DateTime? value, JsonSerializer serializer) - { - var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; - - string dateFormat; - if (!isEn_US) - { - // Chinese date format - dateFormat = "yyyy-MM-dd HH:mm:ss"; - } - else - { - // Default or English date format - dateFormat = "MM/dd/yyyy HH:mm:ss"; - } - - if (value.HasValue) - { - writer.WriteValue(value.Value.ToString(dateFormat)); - - } - else - { - writer.WriteValue(default(DateTime?)); - } - - } - } - - #endregion -} diff --git a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NewtonsoftJsonSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NewtonsoftJsonSetup.cs index 14eda2f4f..147472270 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NewtonsoftJsonSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NewtonsoftJsonSetup.cs @@ -22,13 +22,6 @@ namespace IRaCIS.Core.API builder.AddNewtonsoftJson(options => { - //大驼峰 - //options.SerializerSettings.ContractResolver = new DefaultContractResolver(); - //小驼峰 - //options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); - - - // 忽略循环引用 options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; @@ -40,10 +33,18 @@ namespace IRaCIS.Core.API options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind; + #region 废弃 + //大驼峰 + //options.SerializerSettings.ContractResolver = new DefaultContractResolver(); + //小驼峰 + //options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); + + //二者只能取其一 //options.SerializerSettings.Converters.Add(new MyDateTimeConverter()); //options.SerializerSettings.Converters.Add(new MyNullableDateTimeConverter()); + #endregion //必须放在后面 options.SerializerSettings.Converters.Add(services.BuildServiceProvider().GetService()); @@ -55,6 +56,7 @@ namespace IRaCIS.Core.API { o.SuppressModelStateInvalidFilter = true; //自己写验证 + #region 废弃验证 ////这里是自定义验证结果和返回状态码 因为这里是在[ApiController]控制器层校验,动态webApi的不会校验 所以需要单独写一个Filter //o.InvalidModelStateResponseFactory = (context) => //{ @@ -65,7 +67,7 @@ namespace IRaCIS.Core.API //return new JsonResult(ResponseOutput.NotOk("The inputs supplied to the API are invalid. " + JsonConvert.SerializeObject( error))); //}; - + #endregion }); diff --git a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NullToEmptyStringResolver.cs b/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NullToEmptyStringResolver.cs index 57ddbe733..04bb3a2c0 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NullToEmptyStringResolver.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NullToEmptyStringResolver.cs @@ -8,27 +8,11 @@ using System.Reflection; namespace IRaCIS.Core.API { + /// + /// LowerCamelCaseJsonAttribute 可以设置类小写返回给前端 + /// public class NullToEmptyStringResolver : DefaultContractResolver { - /// - /// 创建属性 - /// - /// 类型 - /// 序列化成员 - /// - //protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) - //{ - // IList properties = base.CreateProperties(type, memberSerialization); - - - // foreach (var jsonProperty in properties) - // { - // jsonProperty.DefaultValue = new NullToEmptyStringValueProvider(jsonProperty); - // } - - // return properties; - - //} protected override IList CreateProperties(Type type, MemberSerialization memberSerialization) { @@ -65,4 +49,37 @@ namespace IRaCIS.Core.API } + public class NullToEmptyStringValueProvider : IValueProvider + { + PropertyInfo _MemberInfo; + public NullToEmptyStringValueProvider(PropertyInfo memberInfo) + { + _MemberInfo = memberInfo; + } + public object GetValue(object target) + { + object result = _MemberInfo.GetValue(target); + if (_MemberInfo.PropertyType == typeof(string) && result == null) result = ""; + else if (_MemberInfo.PropertyType == typeof(String[]) && result == null) result = new string[] { }; + //else if (_MemberInfo.PropertyType == typeof(Nullable) && result == null) result = 0; + //else if (_MemberInfo.PropertyType == typeof(Nullable) && result == null) result = 0.00M; + + return result; + } + public void SetValue(object target, object value) + { + + if (_MemberInfo.PropertyType == typeof(string)) + { + //去掉前后空格 + _MemberInfo.SetValue(target, value == null ? string.Empty : value.ToString() == string.Empty ? value : value/*.ToString().Trim()*/); + + } + else + { + _MemberInfo.SetValue(target, value); + } + + } + } } diff --git a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NullToEmptyStringValueProvider.cs b/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NullToEmptyStringValueProvider.cs deleted file mode 100644 index 111f7d093..000000000 --- a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NullToEmptyStringValueProvider.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Newtonsoft.Json.Serialization; -using System; -using System.Reflection; - -namespace IRaCIS.Core.API -{ - - public class NullToEmptyStringValueProvider : IValueProvider - { - PropertyInfo _MemberInfo; - public NullToEmptyStringValueProvider(PropertyInfo memberInfo) - { - _MemberInfo = memberInfo; - } - public object GetValue(object target) - { - object result = _MemberInfo.GetValue(target); - if (_MemberInfo.PropertyType == typeof(string) && result == null) result = ""; - else if (_MemberInfo.PropertyType == typeof(String[]) && result == null) result = new string[] { }; - //else if (_MemberInfo.PropertyType == typeof(Nullable) && result == null) result = 0; - else if (_MemberInfo.PropertyType == typeof(Nullable) && result == null) result = 0.00M; - - return result; - } - public void SetValue(object target, object value) - { - - if (_MemberInfo.PropertyType == typeof(string)) - { - //去掉前后空格 - _MemberInfo.SetValue(target, value == null ? string.Empty : value.ToString() == string.Empty ? value : value/*.ToString().Trim()*/); - - } - else - { - _MemberInfo.SetValue(target, value); - } - - } - } - -}