JSON возвращает свойства в PascalCase вместо camelCase - PullRequest
0 голосов
/ 24 августа 2018

Используя Microsoft.AspNetCOre.OData 7.0.1, если у меня есть список моделей, которых нет в базе данных, результат JSON всегда возвращается как PascalCase вместо camelCase. Как я могу получить свой список, чтобы быть CamelCase?

Относительный пример ниже:

Моя модель, которой нет в базе данных.

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

Мой контроллер

[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 Ответ

0 голосов
/ 25 августа 2018

Вариант 1

Даже если Widget отсутствует в базе данных, его можно добавить в модель данных сущностей (EDM). EDM, вероятно, имеет случай верблюда в качестве конвенции. Widget подхватит это соглашение.

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

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

_edmModel = builder.GetEdmModel();

Вот пример ветки OData хранилища odata / webapi .

Вариант 2

Установите параметры MVC JSON в ConfigureServices. Теперь ответы JSON будут в случае верблюда.

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