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

Hallo,Verwenden Dash (-) Zeichen in Enum Parameter

Ich benutze newtonsoft Deserializer für deserialize JSON-String in ein Objekt.

JsonDeserializer prüft den Enum-Parameternamen. Wenn es gleich ist mit JSON-String. Es konvertiert String in enum.

Kann ich Bindestrich, Minuszeichen (-) in einer Aufzählung als Enum-Parameter verwenden. Ich habe versucht, wie oben zu verwenden, aber ich konnte das Projekt nicht kompilieren.

Dann habe ich das versucht.

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

} 

Deserializer konnte nicht JSON-String deserialisieren.

Fehler: Angeforderte Wert '12 -Stunden‘foun wurde nicht

+0

In den Tagen, wenn 'VB6' Sie können anythnig in eine' Enum' setzen, wenn Sie es zwischen '' Diese Funktionalität wurde leider in '.NET'-Welt entfernt. – ja72

+0

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

+0

@StenPetrov Ich benutze StringEnumConverter zum Deserialisieren und Serialisieren einer Enumeration. Aber es ignoriert JsonPropertyAttribute von Enum-Parametern. Es gibt keine Dokumentation darüber. Warum überprüft es Attribut des Aufzählungsparameters nicht :(http://james.newtonking.com/projects/json/help/index.html?topic=html/T_Newtonsoft_Json_Converters_StringEnumConverter.htm – halit

Antwort

5

Ich reparierte Ausgabe.

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