2017-07-28 57 views
0

是否可以將枚舉序列化爲適當的字符串值或由EnumMember屬性指定的值而不是數字?看來JSON序列化忽略屬性EnumMember屬性。如果我將WebMessageFormat更改爲Xml,它工作正常,但我需要使用JSON。IIS託管的WCF REST服務-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} 

我想獲得以下中的一個(最好是第一,但任何一個工程):

{"FooBar": "FooValue"} 
{"FooBar": "Foo"} 
+0

嘿!你是否能夠使用下面建議的方法解決問題?如果不是,你可以請更新細節和可能的解決方案?如果是的話,你可以在下面註明和/或標記回答,以便asnwer? – Winnie

回答

0

你需要引用你的財產JSON.NET 使用StringEnumConverter屬性如下:

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

[JsonConverter(typeof(StringEnumConverter))] 
public SomeEnum FooBar {get;set;} 

請參閱newtonsoft docs瞭解更多詳情 希望這會有所幫助!