从ASP .Net Core 1.0.0-rc2-final升级到1.0.0后,JSON属性现在变成小写了

136

我刚刚将我们的项目从ASP .Net Core 1.0.0-rc2-final换成了1.0.0。由于JSON属性的大小写不同,我们的网站和客户端停止工作。例如,这行JavaScript现在失败了:

for (var i = 0; i < collection.Items.length; i++){

因为控制器现在将数组称为“items”,而不是“Items”。除安装更新的软件包和编辑project.json文件外,我没有进行任何更改。我没有更改仍然大写其属性的C#模型文件。

为什么ASP.Net Core控制器开始返回小写属性的JSON?如何让它们恢复到从模型中保留属性名称大小写的状态?


请见 https://github.com/aspnet/Announcements/issues/194 - Joe Audette
4
对于那些寻找 .Net Core 3 答案的人,你需要滚动到页面底部。 - Mike Devenney
13个回答

0
这是如何使用.NET 6 Minimal API解决这个问题的方法:
builder.Services.Configure<Microsoft.AspNetCore.Http.Json.JsonOptions>(options =>
{
    options.SerializerOptions.PropertyNameCaseInsensitive = false;
    options.SerializerOptions.PropertyNamingPolicy = null;
    options.SerializerOptions.WriteIndented = true;
});

这里获取解决方案。

你的回答可以通过提供更多的支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

0

对于Core 2.x版本,使用此代码可以默认避免驼峰命名。您需要在Startup.cs文件的ConfigureServices方法中添加以下代码。

services.AddMvc()
.AddJsonOptions(o =>
{
    if (o.SerializerSettings.ContractResolver != null)
    {
        var castedResolver = o.SerializerSettings.ContractResolver
        as DefaultContractResolver;

        castedResolver.NamingStrategy = null;
    }
});

-1
using Microsoft.AspNetCore.Mvc; 

builder.Services.Configure<JsonOptions>(options =>
{
    options.JsonSerializerOptions.PropertyNamingPolicy = null;
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接