Reuse shared JsonSerializerSettings instead of shared ContractResolver.

pull/1505/head
maliming 6 years ago
parent 88ead6fdb9
commit 743c80bc18

@ -1,5 +1,3 @@
using System;
using System.Collections.Generic;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using Volo.Abp.DependencyInjection;
@ -18,31 +16,29 @@ namespace Volo.Abp.Auditing
public string Serialize(object obj)
{
var options = new JsonSerializerSettings
{
ContractResolver = GetSharedAuditingContractResolver(Options.IgnoredTypes)
};
return JsonConvert.SerializeObject(obj, options);
return JsonConvert.SerializeObject(obj, GetSharedJsonSerializerSettings());
}
private static readonly object SyncObj = new object();
private static AuditingContractResolver _sharedAuditingContractResolver;
private static JsonSerializerSettings _sharedJsonSerializerSettings;
public static AuditingContractResolver GetSharedAuditingContractResolver(List<Type> ignoredTypes)
private JsonSerializerSettings GetSharedJsonSerializerSettings()
{
if (_sharedAuditingContractResolver == null)
if (_sharedJsonSerializerSettings == null)
{
lock (SyncObj)
{
if (_sharedAuditingContractResolver == null)
if (_sharedJsonSerializerSettings == null)
{
_sharedAuditingContractResolver = new AuditingContractResolver(ignoredTypes);
_sharedJsonSerializerSettings = new JsonSerializerSettings
{
ContractResolver = new AuditingContractResolver(Options.IgnoredTypes)
};
}
}
}
return _sharedAuditingContractResolver;
return _sharedJsonSerializerSettings;
}
}
}

@ -18,9 +18,6 @@ namespace Volo.Abp.Http.Client.DynamicProxying
protected IApiDescriptionCache Cache { get; }
private static readonly CamelCasePropertyNamesContractResolver SharedCamelCasePropertyNamesContractResolver =
new CamelCasePropertyNamesContractResolver();
public ApiDescriptionFinder(
IApiDescriptionCache cache,
IDynamicProxyHttpClientFactory httpClientFactory)
@ -97,14 +94,32 @@ namespace Volo.Abp.Http.Client.DynamicProxying
var result = JsonConvert.DeserializeObject(
content,
typeof(ApplicationApiDescriptionModel),
new JsonSerializerSettings
{
ContractResolver = SharedCamelCasePropertyNamesContractResolver
});
typeof(ApplicationApiDescriptionModel), GetSharedJsonSerializerSettings());
return (ApplicationApiDescriptionModel)result;
}
}
private static readonly object SyncObj = new object();
private static JsonSerializerSettings _sharedJsonSerializerSettings;
private static JsonSerializerSettings GetSharedJsonSerializerSettings()
{
if (_sharedJsonSerializerSettings == null)
{
lock (SyncObj)
{
if (_sharedJsonSerializerSettings == null)
{
_sharedJsonSerializerSettings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
}
}
}
return _sharedJsonSerializerSettings;
}
}
}

@ -9,8 +9,10 @@ namespace Volo.Abp.Localization.Json
{
public static class JsonLocalizationDictionaryBuilder
{
private static readonly CamelCasePropertyNamesContractResolver SharedCamelCasePropertyNamesContractResolver =
new CamelCasePropertyNamesContractResolver();
private static readonly JsonSerializerSettings SharedJsonSerializerSettings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
/// <summary>
/// Builds an <see cref="JsonLocalizationDictionaryBuilder" /> from given file.
@ -38,11 +40,7 @@ namespace Volo.Abp.Localization.Json
try
{
jsonFile = JsonConvert.DeserializeObject<JsonLocalizationFile>(
jsonString,
new JsonSerializerSettings
{
ContractResolver = SharedCamelCasePropertyNamesContractResolver
});
jsonString, SharedJsonSerializerSettings);
}
catch (JsonException ex)
{

@ -11,16 +11,16 @@ namespace Volo.Abp.AspNetCore
public abstract class AbpAspNetCoreTestBase<TStartup> : AbpAspNetCoreIntegratedTestBase<TStartup>
where TStartup : class
{
private static readonly CamelCasePropertyNamesContractResolver SharedCamelCasePropertyNamesContractResolver =
new CamelCasePropertyNamesContractResolver();
private static readonly JsonSerializerSettings SharedJsonSerializerSettings =
new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
protected virtual async Task<T> GetResponseAsObjectAsync<T>(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK)
{
var strResponse = await GetResponseAsStringAsync(url, expectedStatusCode);
return JsonConvert.DeserializeObject<T>(strResponse, new JsonSerializerSettings
{
ContractResolver = SharedCamelCasePropertyNamesContractResolver
});
return JsonConvert.DeserializeObject<T>(strResponse, SharedJsonSerializerSettings);
}
protected virtual async Task<string> GetResponseAsStringAsync(string url, HttpStatusCode expectedStatusCode = HttpStatusCode.OK)

Loading…
Cancel
Save