From 08fd42e1d45dde67e842eb2487f912259b39a134 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 19 Jul 2019 11:56:11 +0300 Subject: [PATCH] Revised AbpJsonOptions. --- .../src/Volo.Abp.Json/Volo/Abp/Json/AbpJsonOptions.cs | 9 +++++---- .../Abp/Json/Newtonsoft/AbpJsonIsoDateTimeConverter.cs | 6 +++++- .../Volo/Abp/Json/Newtonsoft/NewtonsoftJsonSerializer.cs | 7 ++----- .../AspNetCore/Mvc/Json/JsonResultController_Tests.cs | 2 +- .../Volo/Abp/AspNetCore/Mvc/Json/JsonSerializer_Tests.cs | 2 +- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/framework/src/Volo.Abp.Json/Volo/Abp/Json/AbpJsonOptions.cs b/framework/src/Volo.Abp.Json/Volo/Abp/Json/AbpJsonOptions.cs index 5a900730bc..9449aa338d 100644 --- a/framework/src/Volo.Abp.Json/Volo/Abp/Json/AbpJsonOptions.cs +++ b/framework/src/Volo.Abp.Json/Volo/Abp/Json/AbpJsonOptions.cs @@ -1,9 +1,10 @@ -using Newtonsoft.Json; - -namespace Volo.Abp.Json +namespace Volo.Abp.Json { public class AbpJsonOptions { - public JsonSerializerSettings SerializerSettings { get; } = new JsonSerializerSettings(); + /// + /// Used to set default value for the DateTimeFormat. + /// + public string DefaultDateTimeFormat { get; set; } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Json/Volo/Abp/Json/Newtonsoft/AbpJsonIsoDateTimeConverter.cs b/framework/src/Volo.Abp.Json/Volo/Abp/Json/Newtonsoft/AbpJsonIsoDateTimeConverter.cs index 1f3c5b3ee7..b02135bd6d 100644 --- a/framework/src/Volo.Abp.Json/Volo/Abp/Json/Newtonsoft/AbpJsonIsoDateTimeConverter.cs +++ b/framework/src/Volo.Abp.Json/Volo/Abp/Json/Newtonsoft/AbpJsonIsoDateTimeConverter.cs @@ -14,7 +14,11 @@ namespace Volo.Abp.Json.Newtonsoft public AbpJsonIsoDateTimeConverter(IClock clock, IOptions abpJsonOptions) { _clock = clock; - DateTimeFormat = abpJsonOptions.Value.SerializerSettings.DateFormatString; + + if (abpJsonOptions.Value.DefaultDateTimeFormat != null) + { + DateTimeFormat = abpJsonOptions.Value.DefaultDateTimeFormat; + } } public override bool CanConvert(Type objectType) diff --git a/framework/src/Volo.Abp.Json/Volo/Abp/Json/Newtonsoft/NewtonsoftJsonSerializer.cs b/framework/src/Volo.Abp.Json/Volo/Abp/Json/Newtonsoft/NewtonsoftJsonSerializer.cs index 2763d5ecf3..262c2b04d7 100644 --- a/framework/src/Volo.Abp.Json/Volo/Abp/Json/Newtonsoft/NewtonsoftJsonSerializer.cs +++ b/framework/src/Volo.Abp.Json/Volo/Abp/Json/Newtonsoft/NewtonsoftJsonSerializer.cs @@ -1,5 +1,4 @@ using System; -using Microsoft.Extensions.Options; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using Volo.Abp.DependencyInjection; @@ -9,12 +8,10 @@ namespace Volo.Abp.Json.Newtonsoft public class NewtonsoftJsonSerializer : IJsonSerializer, ITransientDependency { private readonly AbpJsonIsoDateTimeConverter _dateTimeConverter; - private readonly AbpJsonOptions _abpJsonOptions; - public NewtonsoftJsonSerializer(AbpJsonIsoDateTimeConverter dateTimeConverter, IOptions abpJsonOptions) + public NewtonsoftJsonSerializer(AbpJsonIsoDateTimeConverter dateTimeConverter) { _dateTimeConverter = dateTimeConverter; - _abpJsonOptions = abpJsonOptions.Value; } public string Serialize(object obj, bool camelCase = true, bool indented = false) @@ -34,7 +31,7 @@ namespace Volo.Abp.Json.Newtonsoft protected virtual JsonSerializerSettings CreateSerializerSettings(bool camelCase = true, bool indented = false) { - var settings = _abpJsonOptions.SerializerSettings; + var settings = new JsonSerializerSettings(); settings.Converters.Insert(0, _dateTimeConverter); diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Json/JsonResultController_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Json/JsonResultController_Tests.cs index 039631091b..508ac04ce2 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Json/JsonResultController_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Json/JsonResultController_Tests.cs @@ -13,7 +13,7 @@ namespace Volo.Abp.AspNetCore.Mvc.Json { services.Configure(options => { - options.SerializerSettings.DateFormatString = "yyyy*MM*dd"; + options.DefaultDateTimeFormat = "yyyy*MM*dd"; }); base.ConfigureServices(context, services); diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Json/JsonSerializer_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Json/JsonSerializer_Tests.cs index 3ad8738ca8..f621a8733a 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Json/JsonSerializer_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Json/JsonSerializer_Tests.cs @@ -20,7 +20,7 @@ namespace Volo.Abp.AspNetCore.Mvc.Json { services.Configure(options => { - options.SerializerSettings.DateFormatString = "yyyy*MM*dd"; + options.DefaultDateTimeFormat = "yyyy*MM*dd"; }); base.ConfigureServices(context, services);