C# IIS托管的WCF REST服务-JSON将枚举序列化为字符串

C# IIS托管的WCF REST服务-JSON将枚举序列化为字符串,c#,json,rest,wcf,enums,C#,Json,Rest,Wcf,Enums,是否可以将枚举序列化为正确的字符串值或EnumMember属性指定的值而不是数字?JSON序列化似乎忽略了EnumMember属性的Value属性。如果我将WebMessageFormat更改为Xml,它可以正常工作,但我需要使用JSON 我有以下IIS托管的REST服务 [OperationContract] [WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = "test")] SomeObject Tes

是否可以将枚举序列化为正确的字符串值或EnumMember属性指定的值而不是数字?JSON序列化似乎忽略了EnumMember属性的Value属性。如果我将WebMessageFormat更改为Xml,它可以正常工作,但我需要使用JSON

我有以下IIS托管的REST服务

[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json,
    UriTemplate = "test")]
    SomeObject Test();
SomeObject:

[DataContract]
public class SomeObject
{
    [DataMember]
    public SomeEnum FooBar
    {
        get;
        set;
    }
}
SomeEnum:

[DataContract]
public enum SomeEnum
{
    [EnumMember(Value = "FooValue")]
    [Description("FooDescription")]
    Foo,

    [EnumMember(Value = "BarValue")]
    [Description("BarDescription")]
    Bar,
}
我得到的是:

{"FooBar":0}
我希望获得以下其中一项(最好是第一项,但任何一项都有效):

你需要参考 对属性使用StringEnumConverter属性,如下所示:

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

[JsonConverter(typeof(StringEnumConverter))]
public SomeEnum FooBar {get;set;}
有关更多详细信息,请参阅newtonsoft 希望这有帮助

您需要参考 对属性使用StringEnumConverter属性,如下所示:

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

[JsonConverter(typeof(StringEnumConverter))]
public SomeEnum FooBar {get;set;}
有关更多详细信息,请参阅newtonsoft
希望这有帮助

嘿!您是否能够使用下面建议的方法解决问题?如果没有,请更新详细信息,并可能更新解决方案?如果是的话,请你投票并/或将下面的回复标记为asnwer?嘿!您是否能够使用下面建议的方法解决问题?如果没有,请更新详细信息,并可能更新解决方案?如果是,请您在下面的回复中添加投票和/或标记为asnwer?