feat:Json格式化全局处理
This commit is contained in:
parent
8c0693b6f8
commit
eab1e2d048
32
src/TrackCenter.Api/DateTimeJsonConverter.cs
Normal file
32
src/TrackCenter.Api/DateTimeJsonConverter.cs
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace TrackCenter.Api;
|
||||||
|
|
||||||
|
public class DateTimeJsonConverter: JsonConverter
|
||||||
|
{
|
||||||
|
private readonly string _format;
|
||||||
|
|
||||||
|
public DateTimeJsonConverter(string format = "yyyy-MM-dd HH:mm:ss") => this._format = format;
|
||||||
|
|
||||||
|
public override bool CanConvert(Type objectType)
|
||||||
|
{
|
||||||
|
return objectType == typeof (DateTime) || objectType == typeof (DateTime?);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override object? ReadJson(
|
||||||
|
JsonReader reader,
|
||||||
|
Type objectType,
|
||||||
|
object? existingValue,
|
||||||
|
JsonSerializer serializer)
|
||||||
|
{
|
||||||
|
if (reader.Value == null || string.IsNullOrEmpty(reader.Value.ToString()))
|
||||||
|
return (object) null;
|
||||||
|
DateTime result;
|
||||||
|
return DateTime.TryParse(reader.Value.ToString(), out result) ? (object) result : (object) new DateTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
|
||||||
|
{
|
||||||
|
writer.WriteValue(((DateTime) value).ToString(this._format));
|
||||||
|
}
|
||||||
|
}
|
||||||
26
src/TrackCenter.Api/LongJsonConverter.cs
Normal file
26
src/TrackCenter.Api/LongJsonConverter.cs
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace TrackCenter.Api;
|
||||||
|
|
||||||
|
public class LongJsonConverter : JsonConverter
|
||||||
|
{
|
||||||
|
public override bool CanConvert(Type objectType)
|
||||||
|
{
|
||||||
|
return objectType == typeof (long) || objectType == typeof (long?);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override object? ReadJson(
|
||||||
|
JsonReader reader,
|
||||||
|
Type objectType,
|
||||||
|
object? existingValue,
|
||||||
|
JsonSerializer serializer)
|
||||||
|
{
|
||||||
|
long result;
|
||||||
|
return reader.Value == null || string.IsNullOrEmpty(reader.Value.ToString()) ? (object) null : (long.TryParse(reader.Value.ToString(), out result) ? (object) result : (object) new DateTime());
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
|
||||||
|
{
|
||||||
|
writer.WriteValue(((long) value).ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -8,6 +8,7 @@ using Fake.Security.Claims;
|
|||||||
using FluentValidation.AspNetCore;
|
using FluentValidation.AspNetCore;
|
||||||
using Hangfire;
|
using Hangfire;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.AspNetCore.Mvc.Authorization;
|
using Microsoft.AspNetCore.Mvc.Authorization;
|
||||||
using Microsoft.OpenApi.Models;
|
using Microsoft.OpenApi.Models;
|
||||||
using OpenTelemetry.Resources;
|
using OpenTelemetry.Resources;
|
||||||
@ -59,6 +60,16 @@ public class TrackCenterApiModule : FakeModule
|
|||||||
options.Filters.Add<SignatureValidationFilter>();
|
options.Filters.Add<SignatureValidationFilter>();
|
||||||
}).AddNewtonsoftJson();
|
}).AddNewtonsoftJson();
|
||||||
|
|
||||||
|
//Json格式化全局处理
|
||||||
|
context.Services.Configure<MvcNewtonsoftJsonOptions>(options =>
|
||||||
|
{
|
||||||
|
options.SerializerSettings.ContractResolver =
|
||||||
|
new Newtonsoft.Json.Serialization.
|
||||||
|
CamelCasePropertyNamesContractResolver(); // 首字母小写(驼峰样式)
|
||||||
|
options.SerializerSettings.Converters.Add(new DateTimeJsonConverter("yyyy-MM-dd HH:mm:ss"));
|
||||||
|
options.SerializerSettings.Converters.Add(new LongJsonConverter());
|
||||||
|
});
|
||||||
|
|
||||||
services.AddFakeSwaggerGen(options =>
|
services.AddFakeSwaggerGen(options =>
|
||||||
{
|
{
|
||||||
options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme()
|
options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user