У меня есть реализация JsonConverter, называемая LocalizedStringEnumConverter, которая сериализует перечисления в локализованные строки и, как таковая, регистрируется глобально в Global.asax через JsonSettings с синтаксисом:
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
Converters = new List<JsonConverter>
{
new LocalizedStringEnumConverter()
}
};
Теперь в одном месте я не хочу использовать конвертер, я хочу, чтобы enum сериализовался как обычно - как число.
Итак, я попытался создать новый экземпляр JsonSerializerSettings и передать его следующим образом:
JsonSerializerSettings jsonSettings = new JsonSerializerSettings
{
Converters = new List<JsonConverter>()
};
А затем вызовите сериализацию с этими настройками (надеясь, что глобально зарегистрированный преобразователь будет переопределен:
JsonConvert.SerializeObject(someObjectContainingEnumProperty, jsonSettings)
Однако в результате я снова получаю перечисления, сериализованные с помощью моего LocalizedStringEnumConverter.
Есть ли способ удалить глобально зарегистрированный преобразователь?
JsonSerializer.Create()
избегал настроек по умолчанию.JsonSerializer.CreateDefault()
использует настройки по умолчанию. См. документацию. 25.01.2016