假设我有一个代表某事或其他内容的枚举:
public enum ResultState
{
Found,
Deleted,
NotFound
}
在我的序列化json中,我希望这些值分别序列化为"found"
,"gone"
或"not_found"
。 (注意:这是不是 camelCase,而是一个完全自定义的字符串!)
我正在使用JSON.NET
我的一切工作几乎都是正确的 - 枚举通过StringEnumConverter
全局转换为字符串,但我不能在生活中看到如何实现与上述类似的东西。
我最初的想法是将JsonProperty(...)
属性应用于相关的枚举值,但这似乎不起作用!
我能想到的唯一方法是编写自己的JsonConverter
继承自StringEnumConverter
,但还有一些额外的魔法来处理我创建的新JsonName
属性
正如您可能想象的那样,我不喜欢这个想法。
我想知道你是不是很棒的人会建议一个更简单的选择?
答案 0 :(得分:9)
碰巧,我正在思考整件事。
我使用了来自EnumMember
的{{1}}属性,效果很好。
这是我完整性的新内容:
System.Runtime.Serialization
在调用public enum QueryResultState
{
[EnumMember(Value="found")]
Found,
[EnumMember(Value="gone")]
Deleted,
[EnumMember(Value="not_found")]
NotFound
}
时不要忘记包含StringEnumConverter
,因为默认情况下JSON.NET将枚举序列化为整数:
JsonConvert.Serialize(...)