System.Text.Json:当 json 配置具有通用 JsonStringEnumConverter 时,如何将单个枚举序列化为数字

fre*_*per 8 c# enums json .net-core system.text.json

System.Text.Json默认以enum序列化编号。就我而言,我需要 Startup.cs 中的字符串,我添加一个转换器来将所有枚举序列化为字符串,如此处所示。

 .AddJsonOptions(
           c =>
           {
             c.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
          }
        );
Run Code Online (Sandbox Code Playgroud)

但我有一个特定的枚举,我需要将其序列化为数字。

public enum fareStatus
{
    None = 0,
    Club = 1,
    NoClub = 2
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下我想得到 0,1,2 而不是字符串,

在这种情况下可能吗?谢谢

Ser*_*rge 1

如果你只想从枚举中获取数字试试这个

    var item = new Item { Status = fareStatus.NoClub };
    var options = new JsonSerializerOptions();
    var json= JsonSerializer.Serialize(item,options);

Run Code Online (Sandbox Code Playgroud)

json

{"Status":2}
Run Code Online (Sandbox Code Playgroud)

并尝试这个代码

    var options = new JsonSerializerOptions();
    options.Converters.Add(new JsonStringEnumConverter());
    var json= JsonSerializer.Serialize(item,options);

    item=JsonSerializer.Deserialize<Item>(json,options);

Run Code Online (Sandbox Code Playgroud)

json

{"Status":"NoClub"}
Run Code Online (Sandbox Code Playgroud)

班级

public class Item
{
    public fareStatus Status {get; set;}
}
Run Code Online (Sandbox Code Playgroud)