MediaTypeFormatter在web api中序列化枚举字符串值

时间:2013-11-27 12:05:40

标签: c# asp.net asp.net-mvc asp.net-web-api enums

考虑以下代码:

public Gender Get()
{
    return Gender.Female;
}
public enum Gender
{
   Male,
   Female
}

此代码是一个返回Gender枚举的Web API控制器。当我们使用XmlTypeFormatter并调用该方法时,它会返回MaleFemale。但是当我们使用JsonTypeFormatter时,我们得到枚举的值,例如1。

为什么会这样?!我们如何从Female获得MaleJsonTypeFormatter

2 个答案:

答案 0 :(得分:35)

在你的申请中开始:

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;
}

答案 1 :(得分:24)

由于设置对象应该已经存在,这里是hutchonoid代码的简化版本:

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());