2013-02-25 54 views
11
public enum TimeFormat 
{ 
     @12-hour, 
     @24-hour 
} 

हाय में चरित्र,डैश का प्रयोग करें (-) enum पैरामीटर

मैं एक वस्तु को deserialize json स्ट्रिंग के लिए newtonsoft deserializer का उपयोग करें।

JsonDeserializer enum पैरामीटर नाम की जांच करता है। अगर यह जेसन स्ट्रिंग के साथ समान है। यह स्ट्रिंग को enum में परिवर्तित करता है।

क्या मैं enum पैरामीटर के रूप में एक enum में डैश, मिनस (-) वर्ण का उपयोग कर सकता हूं। मैंने ऊपर के रूप में उपयोग करने की कोशिश की, लेकिन मैं परियोजना संकलित नहीं कर सका।

फिर मैंने कोशिश की।

[JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] 
public enum TimeFormat 
{ 
    [JsonProperty("12-hour")] 
    hour12, 
    [JsonProperty("24-hour")] 
    hour24, 

} 

Deserializer जेसन स्ट्रिंग को deserialize नहीं कर सका।

त्रुटि: अनुरोधित मूल्य '12 घंटे '

+0

उन दिनों में यदि 'VB6' आप' enum' में किसी भी जगह डाल सकते हैं यदि आपने इसे '[' और ']' के बीच संलग्न किया है। दुर्भाग्य से '.NET' दुनिया में यह कार्यक्षमता हटा दी गई है। – ja72

+0

http://stackoverflow.com/questions/2441290/json-serialization-of-c-sharp-enum-as-string –

+0

@StenPetrov मैं stringEnumConverter का उपयोग एक enum deserialize और serialize करने के लिए करते हैं। लेकिन यह enum पैरामीटर के JsonPropertyAttribute को अनदेखा करता है। इसके बारे में कोई दस्तावेज नहीं है। यह enum पैरामीटर की विशेषता क्यों नहीं देखता है :(http://james.newtonking.com/projects/json/help/index.html?topic=html/T_Newtonsoft_Json_Converters_StringEnumConverter.htm – halit

उत्तर

5

मैं तय मुद्दा foun नहीं किया गया।

[JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]  
public enum TimeFormat 
{ 
    [System.Runtime.Serialization.EnumMember(Value = "12-hour")] 
    hour12, 
    [System.Runtime.Serialization.EnumMember(Value = "24-hour")] 
    hour24, 

} 

StringEnumConverter चेकों EnumMemberAttribute