c# - 如何使用 json.net 将枚举序列化为不同的属性名称

标签 c# serialization enums json.net

我有以下枚举

public enum PermissionType
{
  [JsonProperty(PropertyName = "can_fly")]
  PermissionToFly,
  [JsonProperty(PropertyName = "can_swim")]
  PermissionToSwim
};

和一个具有这个属性的类

[JsonProperty(PropertyName = "permissions", ItemConverterType = typeof(StringEnumConverter))]
public IList<PermissionType> PermissionKeynames { get; set; }`

我想将枚举列表序列化为字符串列表,序列化列表使用 PropertyName 中指定的字符串(例如“can_swim”)而不是属性(property)的实际名称“PermissionToSwim”。但是,每当我调用 JsonConvert.SerializeObject 时,我都会得到

"permission_keynames":["PermissionToFly","PermissionToSwim"]

而不是我想要的

"permission_keynames":["can_fly","can_swim"]

我想在我的代码中保留短语“PermissionToSwim”,序列化为另一个词。知道我如何实现这一目标吗?我的直觉说注释是罪魁祸首,但我找不到正确的注释。

最佳答案

Looks like你可以使用 EnumMember attribute 来完成这项工作(在 System.Runtime.Serialization 中找到)。

public enum PermissionType
{
    [EnumMember(Value = "can_fly")]
    PermissionToFly,

    [EnumMember(Value = "can_swim")]
    PermissionToSwim
}

如果您使用这些属性,您也不需要在列表的 JsonProperty 属性中设置 ItemConverterType

关于c# - 如何使用 json.net 将枚举序列化为不同的属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26391632/

相关文章:

c++如何将类序列化为json并解析json文件?

java enum ArrayList - 这可能吗?

swift - Kotlin 等效于 Swift 字符串枚举(类型化的字符串常量集)

C# 在缓存中存储值类型

C# 程序集重定向

c# - .NET 关于异步套接字操作和消息框架的问题

java - Eclipse Kepler 代码完成不起作用

c# - 我如何通过自己的身份验证/成员身份提供商为 DNN 6 构建?

java - 使用 Gson 自定义 Json 序列化

java - 如何在多树中找到最大的公共(public)子树