100 lines
2.7 KiB
C#
100 lines
2.7 KiB
C#
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<LowerCamelCaseJsonAttribute>() != null)
|
|
// {
|
|
// contract.NamingStrategy = new IRCCamelCaseNamingStrategy();
|
|
// }
|
|
|
|
// return contract;
|
|
// }
|
|
//}
|
|
|
|
|
|
|
|
#region 废弃
|
|
|
|
public class MyDateTimeConverter : JsonConverter<DateTime>
|
|
{
|
|
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<DateTime?>
|
|
{
|
|
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
|
|
}
|