gpt4 book ai didi

c# - 在 ASP.NET Core 中将 JSON 字符串整数反序列化为 Enum

转载 作者:行者123 更新时间:2023-12-04 00:13:06 28 4
gpt4 key购买 nike

我正在创建一个 ASP.NET Core API,我的用户有一个角色,就像这样

class User
{
public Guid Id {get; set;}

public string Email {get; set;}

public Role Role {get; set;}
}

enum Role : byte
{
User = 0,
Administrator = 1
}
现在的问题是,我的用户 CreateOrUpdate端点正在获取此 JSON 数据
{
"id": "2abe50d6-4c81-4ace-ad95-c8182d4384a3",
"email": "someEmail@example.org",
"role": "0"
}
这是有问题的端点声明
public User CreateOrUpdate([FromBody] User user)
{
// ...
}
它无法反序列化,因此返回 HTTP 400 Bad Request .但是,如果我删除 0 周围的引号的 role属性(property),它就像一个魅力。
那么,如何让 ASP.NET Core 反序列化 "0"0以及枚举变体 User ?

最佳答案

来自 How to customize property names and values with System.Text.Json - Enum as string .
默认情况下,System.Text.Json 从整数转换枚举,但在你的情况下,“0”是一个字符串。您需要指定一个转换器来从字符串转换枚举,如:

public void ConfigureServices(IServiceCollection services)
{

services.AddControllers().AddJsonOptions(o =>
{
o.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
o.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
});
}

关于c# - 在 ASP.NET Core 中将 JSON 字符串整数反序列化为 Enum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66596599/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com