在枚举参数中使用Dash( - )字符

hal*_*lit 13 c# serialization json json.net deserialization

public enum TimeFormat
{ 
        @12-hour,
        @24-hour
}
Run Code Online (Sandbox Code Playgroud)

嗨,

我使用newtonsoft反序列化器将json字符串反序列化为一个对象.

JsonDeserializer检查枚举参数名称.如果它与json字符串相同.它将字符串转换为枚举.

我可以在枚举中使用Dash,Minus( - )字符作为枚举参数.我尝试使用上面的,但我无法编译项目.

然后我尝试了这个.

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

}
Run Code Online (Sandbox Code Playgroud)

反序列化器无法反序列化json字符串.

错误:请求值'12 -hour'不是foun

hal*_*lit 8

我解决了问题.

[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,

}
Run Code Online (Sandbox Code Playgroud)

StringEnumConverter检查EnumMemberAttribute.