为什么Json.Net将枚举值反序列化为整数并接受为有效?

时间:2017-09-28 15:43:33

标签: c# json serialization enums json.net

我对Json.NET如何序列化/反序列化枚举感到困惑。

我在JSON Schema中有这个字段:

"MyEnumValue": {
    "type": "string",
    "enum": ["D", "F", "R"]
},

和这个C#代码:

[JsonProperty(PropertyName = "MyEnumValue", Required = Required.Always)]
public MyEnumValue MyEnumValue { get; set; } 

public enum MyEnumValue 
{
    D, F, R
}

当我使用此功能时:

JsonConvert.SerializeObject

创建的Json文本包含:

"MyEnumValue":82

因此,JSON.NET反序列化一个枚举值,该值将char作为整数,这是char的ASCII值。

我的问题是: *为什么我不能通过序列化来获取字符?

  • (通用)JSON架构规则是否正常?

1 个答案:

答案 0 :(得分:6)

如果您需要[en]将枚举序列化为字符串,请将其添加到属性:

[JsonProperty(PropertyName = "Enum", Required = Required.Always)]
[JsonConverter(typeof(StringEnumConverter))]
public MyEnumValue MyEnumValue { get; set; }