【问题标题】:Asp Core 3 Preview 4 - JSON camelcaseAsp Core 3 Preview 4 - JSON 驼峰式
【发布时间】:2019-04-27 10:24:12
【问题描述】:

将我的 ASP.Core API 从 2.2 迁移到 3.0 后,我发现使用 JSON 序列化时返回 DTO 的方式有些奇怪。

最初,我所有的回复都会以驼峰形式返回。然而,现在一切都设置为 PascalCase。

我尝试了以下设置以及 DefaultPropertyNamesContractResolver。:

services.AddMvc()
        .AddNewtonsoftJson(options =>
        {
             // Return JSON responses in LowerCase?
             options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

             // Resolve Looping navigation properties
             options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
        });

这是控制器返回对象的方式。

// GET: api/Projects
[HttpGet]
public async Task<IEnumerable<Project>> GetProjects()
{
    return await _context.GetAll();
}

奇怪的是,即使 Swagger 报告结果应该以驼峰形式返回,但 JSON 对象总是以 Pascal 大写。

任何想法我做错了什么?

【问题讨论】:

  • 这似乎是ASP.NET Core preview 4 中的一个错误。您可以在这里提交问题:github.com/aspnet/AspNetCore
  • 谢谢你,@TanvirArjel。您是否确信在我提出错误报告之前我不会遗漏一些东西?
  • 就我而言,ASP.NET Core 默认的序列化格式是 CamelCase。然后,即使您尝试使用options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();,但仍然是其 PasCal 案例。很奇怪。
  • 是的,我不确定在这个阶段还有什么可以尝试的。谢谢,我会在 GitHub 页面上提出。
  • 你试过了吗:(options.SerializerSettings.ContractResolver as DefaultContractResolver).NamingStrategy = new CamelCaseNamingStrategy(true, false);

标签: c# asp.net .net-core


【解决方案1】:

我在项目中使用 Swashbuckle,它从该包中引用 NewtonJson 依赖项,而不是引用 Microsoft Newton 包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2015-12-06
    • 2013-09-29
    • 2020-02-01
    • 1970-01-01
    • 2010-12-09
    • 2016-06-12
    相关资源
    最近更新 更多