【发布时间】:2022-01-25 06:21:52
【问题描述】:
我创建了 CRUD 控制器。创建模型时,我需要使用模式:
{ "id": int, "name": string }
但控制器也绑定了架构
{ "Id": int, "Name": string }
如何强制控制器只绑定小写版本{ "id": int, "name": string }?
【问题讨论】:
标签: c# asp.net-core asp.net-web-api binding
我创建了 CRUD 控制器。创建模型时,我需要使用模式:
{ "id": int, "name": string }
但控制器也绑定了架构
{ "Id": int, "Name": string }
如何强制控制器只绑定小写版本{ "id": int, "name": string }?
【问题讨论】:
标签: c# asp.net-core asp.net-web-api binding
网络应用的默认JsonSerializerOptions 值不区分大小写。
取自these docs(见注释):
默认情况下,反序列化查找区分大小写的属性名 JSON 和目标对象属性之间的匹配。改变这一点 行为,将 JsonSerializerOptions.PropertyNameCaseInsensitive 设置为 真的:
注意
网络默认是不区分大小写。
您希望将序列化程序配置为使用PropertyNameCaseInsensitive = false 以便区分大小写。
您可以在Startup.cs中配置ConfigureServices方法中的选项:
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNameCaseInsensitive = false;
});
或在 .NET 6 中使用最少的 API:
builder.Services.Configure<JsonOptions>(options =>
{
options.SerializerOptions.PropertyNameCaseInsensitive = false;
});
【讨论】: