Merge branch 'dev' of https://git.tuotong-tech.com/tnb/tnb.server into dev
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using JNPF;
|
||||
using System.Globalization;
|
||||
using JNPF;
|
||||
using JNPF.Common.Core.Filter;
|
||||
using JNPF.Common.Options;
|
||||
using JNPF.EventHandler;
|
||||
@@ -48,7 +49,8 @@ public static class ConfigureMvcControllerExtensions
|
||||
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
|
||||
|
||||
// 格式化json输出的日期格式为时间戳
|
||||
options.SerializerSettings.Converters.Add(new NewtonsoftDateTimeJsonConverter());
|
||||
// options.SerializerSettings.Converters.Add(new NewtonsoftDateTimeJsonConverter());
|
||||
options.SerializerSettings.Converters.Add(new MyNewtonsoftDateTimeJsonConverter());//zhoukeda 2023.10.24
|
||||
});
|
||||
|
||||
services.AddUnifyJsonOptions("special", new JsonSerializerSettings
|
||||
@@ -123,4 +125,41 @@ public static class ConfigureMvcControllerExtensions
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
public class MyNewtonsoftDateTimeJsonConverter : NewtonsoftDateTimeJsonConverter
|
||||
{
|
||||
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
||||
{
|
||||
bool flag = NewtonsoftDateTimeJsonConverter.IsNullable(objectType);
|
||||
if (reader.TokenType == JsonToken.Null || string.IsNullOrEmpty(reader.Value.ToString()))
|
||||
{
|
||||
if (!flag)
|
||||
throw new JsonSerializationException(string.Format((IFormatProvider) CultureInfo.InvariantCulture, "Cannot convert null value to {0}.", (object) objectType));
|
||||
return (object) null;
|
||||
}
|
||||
long result = 0;
|
||||
if (reader.TokenType == JsonToken.Integer)
|
||||
result = (long) reader.Value;
|
||||
else if (reader.TokenType == JsonToken.String)
|
||||
{
|
||||
if (!long.TryParse((string) reader.Value, out result))
|
||||
return (object) Convert.ToDateTime(reader.Value.ToString());
|
||||
return reader.TokenType == JsonToken.Date ? reader.Value : throw new JsonSerializationException(string.Format((IFormatProvider) CultureInfo.InvariantCulture, "Unexpected token parsing date. Expected Integer or String, got {0}.", (object) reader.TokenType));
|
||||
}
|
||||
if (result < 0L)
|
||||
return (object) DateTime.Now;
|
||||
try
|
||||
{
|
||||
DateTime dt = Convert.ToDateTime(reader.Value.ToString());
|
||||
return dt;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeMilliseconds(result);
|
||||
dateTimeOffset = dateTimeOffset.ToLocalTime();
|
||||
DateTime dateTime = dateTimeOffset.DateTime;
|
||||
return (flag ? Nullable.GetUnderlyingType(objectType) : objectType) == typeof (DateTimeOffset) ? (object) new DateTimeOffset(dateTime, TimeSpan.Zero) : (object) dateTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user