using IRaCIS.Core.Domain.Share; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using System; using System.Globalization; using System.Reflection; 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 }