Подтвердить что ты не робот

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?

4b9b3361

Ответ 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());