gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:29:32 27 4
gpt4 key购买 nike

使用 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/

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