public static void ConfigureJsonSettings( this IMvcBuilder mvc, IServiceCollection services, JsonSerializerEnum jsonSerializerMode, string timezoneHeaderName, TimeZoneInfo defaultTimeZone) { CaseUtility.JsonSerializerMode = jsonSerializerMode; JsonSerializerSettings jsonSerializerSettings = null; Newtonsoft.Json.JsonSerializer jsonSerializer = null; switch (jsonSerializerMode) { case JsonSerializerEnum.Camelcase: jsonSerializer = JsonUtility.CamelCaseJsonSerializer; jsonSerializerSettings = JsonUtility.CamelCaseJsonSerializerSettings; break; case JsonSerializerEnum.Lowercase: jsonSerializer = JsonUtility.LowerCaseJsonSerializer; jsonSerializerSettings = JsonUtility.LowerCaseJsonSerializerSettings; break; case JsonSerializerEnum.Snakecase: jsonSerializer = JsonUtility.SnakeCaseJsonSerializer; jsonSerializerSettings = JsonUtility.SnakeCaseJsonSerializerSettings; break; default: break; } jsonSerializer.Converters.Clear(); jsonSerializer.Converters.Add(new EnumWithContractJsonConverter()); jsonSerializerSettings.Converters.Clear(); jsonSerializerSettings.Converters.Add(new EnumWithContractJsonConverter()); JsonConvert.DefaultSettings = () => jsonSerializerSettings; services.AddScoped((provider) => jsonSerializer); services.AddScoped((provider) => jsonSerializerSettings); DateTimeConverter.DefaultTimeZone = defaultTimeZone; mvc.AddJsonOptions(options => { options.SerializerSettings.ContractResolver = jsonSerializerSettings.ContractResolver; options.SerializerSettings.Converters = jsonSerializerSettings.Converters; options.SerializerSettings.NullValueHandling = jsonSerializerSettings.NullValueHandling; options.SerializerSettings.Converters.Add(new DateTimeConverter(() => { var httpContextAccessor = services.BuildServiceProvider().GetService <IHttpContextAccessor>(); return(DateTimeConverter.GetTimeZoneByAspNetHeader(httpContextAccessor, timezoneHeaderName)); })); }); }
public static void ConfigureJsonSettings( this IMvcBuilder mvc, IServiceCollection services, JsonSerializerEnum jsonSerializerMode, string timezoneHeaderName, TimeZoneInfo defaultTimeZone) { CaseUtility.JsonSerializerMode = jsonSerializerMode; JsonSerializerSettings = null; JsonSerializer = null; EnumWithContractJsonConverter.IgnoreEnumCase = Api.ApiSettings.UseOriginalEnumValue; switch (jsonSerializerMode) { case JsonSerializerEnum.Camelcase: JsonSerializer = JsonUtility.CamelCaseJsonSerializer; JsonSerializerSettings = JsonUtility.CamelCaseJsonSerializerSettings; break; case JsonSerializerEnum.Lowercase: JsonSerializer = JsonUtility.LowerCaseJsonSerializer; JsonSerializerSettings = JsonUtility.LowerCaseJsonSerializerSettings; break; case JsonSerializerEnum.Snakecase: JsonSerializer = JsonUtility.SnakeCaseJsonSerializer; JsonSerializerSettings = JsonUtility.SnakeCaseJsonSerializerSettings; break; default: break; } // for fluent validation in cqrs extensions PropertyName.Resolver = (propertyName) => { var parts = propertyName.Split('.'); return(string.Join(".", parts.Select(r => r.ToCase(jsonSerializerMode.ToString())))); }; JsonConvert.DefaultSettings = () => JsonSerializerSettings; services.AddScoped((provider) => JsonSerializer); services.AddScoped((provider) => JsonSerializerSettings); DateTimeConverter.DefaultTimeZone = defaultTimeZone; mvc.AddNewtonsoftJson(options => { options.SerializerSettings.ContractResolver = JsonSerializerSettings.ContractResolver; options.SerializerSettings.NullValueHandling = JsonSerializerSettings.NullValueHandling; options.SerializerSettings.Converters.Add(new DateTimeConverter(() => { var httpContextAccessor = services.BuildServiceProvider().GetService <IHttpContextAccessor>(); return(DateTimeConverter.GetTimeZoneByAspNetHeader(httpContextAccessor, timezoneHeaderName)); })); foreach (var converter in JsonSerializerSettings.Converters) { options.SerializerSettings.Converters.Add(converter); } }); }
public static void AddQueryFormatter(this MvcOptions mvcOptions, JsonSerializerEnum jsonSerializer) { CaseQueryValueProvider.JsonSerializerMode = jsonSerializer; mvcOptions.ValueProviderFactories.Add(new CaseQueryValueProviderFactory()); }
public static void AddPathFormatter(this MvcOptions mvcOptions, JsonSerializerEnum jsonSerializer) { PathValueProvider.JsonSerializerMode = jsonSerializer; mvcOptions.ValueProviderFactories.Add(new PathValueProviderFactory()); }