MediaTypeFormatter сериализует значения строки перечисления в web api
Рассмотрим этот код:
public Gender Get()
{
return Gender.Female;
}
public enum Gender
{
Male,
Female
}
Этот код является контроллером веб-API, который возвращает Gender
enum. Когда мы используем XmlTypeFormatter
и вызываем метод, он возвращает Male
или Female
. Но когда мы используем JsonTypeFormatter
, получаем значение перечисления, такое как 1.
Почему это так?! и как мы можем получить Female
или Male
из JsonTypeFormatter
?
Ответы
Ответ 1
В начало приложения:
using Newtonsoft.Json;
protected void Application_Start()
{
SerializeSettings(GlobalConfiguration.Configuration);
}
void SerializeSettings(HttpConfiguration config)
{
JsonSerializerSettings jsonSetting = new JsonSerializerSettings();
jsonSetting.Converters.Add(new Converters.StringEnumConverter());
config.Formatters.JsonFormatter.SerializerSettings = jsonSetting;
}
Ответ 2
Поскольку объект настроек уже должен быть там, здесь приведена упрощенная версия кода хатчоноида:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());