如何在全球范围内告诉Json.Net将StringEnumConverter应用于所有的枚举
我想通过json.net将枚举反序列化为string表示,反之亦然。 我可以弄清楚告诉框架应用其StringEnumConverter的唯一方法是注释这样的属性: 
 [JsonConverter(typeof(StringEnumConverter))] public virtual MyEnums MyEnum { get; set; } 
 然而,在我的使用情况下,全局configurationjson.net会更方便,因此所有枚举都可以使用StringEnumConverter序列化,而不需要额外的注释。 
 有没有办法这样做,例如在自定义JsonSerializerSettings的帮助下? 
 将StringEnumConverter添加到JsonSerializerSettings转换器集合。 
文档: 使用JsonConverters进行序列化
如果你想让序列化程序使用camelCasing,你也可以这样设置:
 SerializerSettings.Converters.Add( new StringEnumConverter { CamelCaseText = true }); 
 这将序列SomeValue someValue 。 
其他的答案适用于ASP.NET,但是如果你想设置这些设置,通常在任何上下文中调用JsonConvert,你可以这样做:
 JsonConvert.DefaultSettings = (() => { var settings = new JsonSerializerSettings(); settings.Converters.Add(new StringEnumConverter {CamelCaseText = true}); return settings; }); 
在你的Global.asax.cs中添加
 HttpConfiguration config = GlobalConfiguration.Configuration; config.Formatters.JsonFormatter.SerializerSettings.Converters.Add (new Newtonsoft.Json.Converters.StringEnumConverter());