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