13
public enum TimeFormat
{ 
        @12-hour,
        @24-hour
}

你好,

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

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

我可以在枚举中使用破折号、减号 (-) 字符作为枚举参数吗?我尝试如上使用,但我无法编译项目。

然后我尝试了这个。

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

}

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

错误:未找到请求的值“12 小时”

4

1 回答 1

12

我解决了问题。

[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

于 2013-02-25T17:34:20.287 回答