Dan*_*Dan 3 c# serialization json.net
假设我有一个表示某事或其他内容的枚举:
public enum ResultState
{
Found,
Deleted,
NotFound
}
Run Code Online (Sandbox Code Playgroud)
在我的序列化JSON,我想这些值序列化为"found","gone"或者"not_found"分别.(注意:这不是 camelCase,而是完全自定义的字符串!)
我正在使用JSON.NET
我的一切工作几乎都是正确的 - 枚举通过全局转换为字符串StringEnumConverter,但我不能为我的生活看到如何实现类似于上面的东西.
我最初的想法是将JsonProperty(...)属性应用于相关的枚举值,但这似乎不起作用!
我能想到这个工作的唯一方法是编写我自己的JsonConverter继承StringEnumConverter,但有一些额外的魔法来处理JsonName我创建的新属性.
正如你可能想象的那样,我不喜欢这个想法.
我想知道你是不是很棒的人会建议一个更简单的选择?
碰巧的是,我在思考整件事.
我使用了EnumMember属性System.Runtime.Serialization,这很有用.
这是我完整性的新枚举:
public enum QueryResultState
{
[EnumMember(Value="found")]
Found,
[EnumMember(Value="gone")]
Deleted,
[EnumMember(Value="not_found")]
NotFound
}
Run Code Online (Sandbox Code Playgroud)
不要忘记StringEnumConverter在调用时包含JsonConvert.Serialize(...),因为JSON.NET默认将Enums序列化为整数:
JsonConvert.SerializeObject(someObjectWithAnEnum, new StringEnumConverter());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |