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

Cześć,Wykorzystanie Dash (-) Charakter parametrem enum

używam newtonsoft Deserializator dla Cofnięcie json ciąg do obiektu.

JsonDeserializer sprawdza nazwę parametru enum. jeśli to samo z ciągiem json. zamienia łańcuch na enum.

Czy mogę używać znaku kreski, minus (-) w wyliczeniu jako parametru wyliczenia. Próbowałem użyć jak wyżej, ale nie mogłem skompilować projektu.

Potem próbowałem tego.

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

} 

Deserializator nie może przekształcić łańcucha Json w deserializację.

Błąd: Żądana wartość '12 -hour”nie został Founda

+0

W dniach, w których 'VB6' można wstawić everyhnig w' Enum', jeśli został on umieszczony pomiędzy '[' i ']'. Ta funkcja została niestety usunięta w świecie .NET. – ja72

+0

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

+0

@StenPetrov Używam StringEnumConverter do deserializacji i serializowania wyliczenia. Ale ignoruje JsonPropertyAttribute z parametrów wyliczeniowych. Nie ma na ten temat dokumentacji. Dlaczego nie sprawdza atrybutu parametru enum :(http://james.newtonking.com/projects/json/help/index.html?topic=html/T_Newtonsoft_Json_Converters_StringEnumConverter.htm – halit

Odpowiedz

5

Naprawiłem problem.

[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 sprawdza EnumMemberAttribute.