Fix JsonNetSerializer settings leaking into derived implementations (#14814)
* Change settings static field to instance property * Rename property to Settings
This commit is contained in:
@@ -10,10 +10,8 @@ public class ConfigurationEditorJsonSerializer : JsonNetSerializer, IConfigurati
|
||||
{
|
||||
public ConfigurationEditorJsonSerializer()
|
||||
{
|
||||
JsonSerializerSettings.Converters.Add(new FuzzyBooleanConverter());
|
||||
JsonSerializerSettings.ContractResolver = new ConfigurationCustomContractResolver();
|
||||
JsonSerializerSettings.Formatting = Formatting.None;
|
||||
JsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore;
|
||||
Settings.Converters.Add(new FuzzyBooleanConverter());
|
||||
Settings.ContractResolver = new ConfigurationCustomContractResolver();
|
||||
}
|
||||
|
||||
private class ConfigurationCustomContractResolver : DefaultContractResolver
|
||||
|
||||
@@ -7,23 +7,20 @@ namespace Umbraco.Cms.Infrastructure.Serialization;
|
||||
|
||||
public class JsonNetSerializer : IJsonSerializer
|
||||
{
|
||||
protected static readonly JsonSerializerSettings JsonSerializerSettings = new()
|
||||
protected JsonSerializerSettings Settings { get; } = new()
|
||||
{
|
||||
Converters = new List<JsonConverter> { new StringEnumConverter() },
|
||||
Formatting = Formatting.None,
|
||||
NullValueHandling = NullValueHandling.Ignore,
|
||||
};
|
||||
|
||||
public string Serialize(object? input) => JsonConvert.SerializeObject(input, JsonSerializerSettings);
|
||||
public string Serialize(object? input) => JsonConvert.SerializeObject(input, Settings);
|
||||
|
||||
public T? Deserialize<T>(string input) => JsonConvert.DeserializeObject<T>(input, JsonSerializerSettings);
|
||||
public T? Deserialize<T>(string input) => JsonConvert.DeserializeObject<T>(input, Settings);
|
||||
|
||||
public T? DeserializeSubset<T>(string input, string key)
|
||||
{
|
||||
if (key == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(key));
|
||||
}
|
||||
ArgumentNullException.ThrowIfNull(key);
|
||||
|
||||
JObject? root = Deserialize<JObject>(input);
|
||||
JToken? jToken = root?.SelectToken(key);
|
||||
|
||||
Reference in New Issue
Block a user