c# - 在枚举参数中使用短划线 (-) 字符

标签 c# json serialization deserialization json.net

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 小时”

最佳答案

我解决了问题。

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

关于c# - 在枚举参数中使用短划线 (-) 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15069588/

相关文章:

java - 以 json 或 xml 格式在文件中写入类的实例

c# - asp.net mvc 3 Web 应用程序在部署后无法运行

javascript - 语法错误: Unexpected token "[ " in JSON - Javascript

Google Search Appliance 的 jQuery 自动完成 Json Ajax 跨浏览器问题

scala - 如何序列化elastic4s ElasticSearch客户端以与Spark RDD一起运行?

java - 在 Java 中通过 udp 发送对象

java - JPA实体可以序列化到磁盘吗?

c# - 如何在 Windows Mobile 中刷新数据网格?

c# - gdi+ 中的 Lomography 效果

c# - CXF Web 服务的 .NET 客户端身份验证和 SOAP 凭据 header