枚举结果的序列化为 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)?
class Person {
[JsonConverter(typeof(StringEnumConverter))]
public Title PersonTitle{ get; set;}
public string Name { get; set;}
}
更新枚举
enum Title {
[EnumMember(Value = "Student")]
STUDENT,
[EnumMember(Value = "Teacher")]
TEACHER,
[EnumMember(Value = "Director")]
DIRECTOR
}
您需要将适当的转换器添加到 JSON 序列化程序。
System.Text.Json
:
- 使用JsonStringEnumConverterclass.
Json.NET
:
- 使用StringEnumConverterclass.
唯一需要更改的代码是:
之前 :
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",
}
]
当我执行 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)?
class Person {
[JsonConverter(typeof(StringEnumConverter))]
public Title PersonTitle{ get; set;}
public string Name { get; set;}
}
更新枚举
enum Title {
[EnumMember(Value = "Student")]
STUDENT,
[EnumMember(Value = "Teacher")]
TEACHER,
[EnumMember(Value = "Director")]
DIRECTOR
}
您需要将适当的转换器添加到 JSON 序列化程序。
System.Text.Json
:
- 使用JsonStringEnumConverterclass.
Json.NET
:
- 使用StringEnumConverterclass.
唯一需要更改的代码是:
之前 :
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",
}
]