枚举结果的序列化为 int

serialization of enum results in int

当我执行 GET 请求以检索我的人员列表时,枚举(标题)被转换为整数:


class Person {

public Title PersonTitle{ get; set;}
public string Name { get; set;}


}

enum Title {
   STUDENT,
   TEACHER,
   DIRECTOR
}

假设我们有以下情况:

Person first = new Person(){
  PersonTitle = Title.STUDENT,
  Name = "Dave"
}

这将导致以下结果 JSON:

[
 {
   "Name" : "Dave",
   "PersonTitle" : 1,
 }
]

如何获取枚举的实际值(在本例中为 STUDENT)?

你可以设置JsonConverterAttribute

class Person {

[JsonConverter(typeof(StringEnumConverter))]
public Title PersonTitle{ get; set;}
public string Name { get; set;}


}

使用 EnumMemberAttribute

更新枚举
enum Title {
   [EnumMember(Value = "Student")]
   STUDENT,
   [EnumMember(Value = "Teacher")]
   TEACHER,
   [EnumMember(Value = "Director")]
   DIRECTOR
}

您需要将适当的转换器添加到 JSON 序列化程序。

System.Text.Json:

Json.NET:

唯一需要更改的代码是:

之前 :

public enum Title {
   STUDENT,
   TEACHER,
   DIRECTOR
}

之后 :

using using System.Text.Json.Serialization;
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum Title {
   STUDENT,
   TEACHER,
   DIRECTOR
}

现在响应如下:


[
 {
   "Name" : "Dave",
   "PersonTitle" : "Student",
 }
]