c# - JSON 返回 PascalCase 格式的属性,而不是 CamelCase 格式

标签 c# asp.net-core odata

使用 Microsoft.AspNetCOre.OData 7.0.1,如果我有一个不在数据库中的模型列表,则 JSON 结果始终以 PascalCase 而不是 CamelCase 形式返回。如何让我的列表采用驼峰命名法?

下面的相关示例:

我的模型不在数据库中。

public class Widget 
{
   public string Id { get; set; }
   public string Name { get; set; }
}

我的 Controller

[Route("api/[controller]")]
public class WidgetController : ODataController 
{
    [EnableQuery()]
    public IActionResult GetWidgets() 
    {
        // Create list of ten Widgets
        var widgetsList = new List<Widget>();

        for(var i = 0; i < 10; i++) {
            widgetsList.Add(new Widget() { Id = i, Name = $"Widget {i}" });
        }

        return this.Ok(widgetsList);
    }       
}

/api/GetWidgets?$select=name 按以下格式返回

{ Name: "Widget" } 

最佳答案

选项 1

即使 Widget 不在数据库中,您也可以将其添加到实体数据模型 (EDM)。 EDM 可能以驼峰命名法为惯例。 Widget 将遵循该约定。

var builder = new ODataConventionModelBuilder();
builder.EnableLowerCamelCase();

builder.EntitySet<Widget>("Widgets");

_edmModel = builder.GetEdmModel();

这是一个sample OData fork of the odata/webapi repository .

选项 2

ConfigureServices 中设置 MVC JSON 选项。现在 JSON 响应将采用驼峰式大小写。

services
    .AddMvc()
    .AddJsonOptions(options => {
        options.SerializerSettings.ContractResolver = 
            new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
    });

关于c# - JSON 返回 PascalCase 格式的属性,而不是 CamelCase 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52010816/

相关文章:

c# - CUDAfy模块的性能

c# - Asp.Net Core "Web API"路由返回 404 未找到

c# - 在无类型实体上应用查询选项

c# - 使用 System.Diagnostics.Process 启动 Jar 文件

c# - 我怎样才能找出是什么在制造垃圾?

调用 Console.ReadLine() 的方法的 C# 单元测试

asp.net-core - asp.net core - 如何提供没有扩展名的静态文件

c# - 创建两个实现相同接口(interface)的单例服务

javascript - 单选按钮组上的 SapUi5 数据绑定(bind)不起作用

c# - 如何正确地对 OData v6.0 Controller 进行单元测试?