Как настроить WebApi для выделения объектов без изменения регистра имен их свойств - PullRequest
0 голосов
/ 06 октября 2018

Когда я напрямую возвращаю динамический объект (полученный из Dapper) из метода WebApi2, регистр свойств является немодальным и точно соответствует регистру имени столбца, определенному в запросе SQL.

Рассматриваемый объектявляется набором строк, и если я оперирую им с помощью LINQ и возвращаю результирующий IEnumerable, внезапно json оказывается в верблюжьей оболочке.

Это имеет отношение к тангенциальной связи: Web API 2: как вернуть JSON сИмена свойств camelCased для объектов и их подобъектов

Как настроить сериализацию для ведения своего собственного проклятого бизнеса и передачи имен через без изменений ?

Недело верблюда или Паскаля, только что переданное.

1 Ответ

0 голосов
/ 08 октября 2018

Ответ, похоже, не ожидается, и моя позиция в отношении лучшей тактики все равно изменилась, поэтому я отвечу на свой вопрос, описав, как я справился с основной проблемой непоследовательного поведения сериализации.

Фактическибизнес по созданию шаблонов обсадных труб - это постоянство и предсказуемость.Неважно, каково это поведение, если оно предсказуемо.

Форсирование повышает предсказуемость: одно или другое, и вы можете изменить все результаты из веб-API с помощью одной настройки.Так что принуждение лучше, и вопрос меняется на «Как я могу предотвратить принуждение?»на «Как я могу заставить динамику принудительно вызываться, как и все другие типы?»

Ответ на этот вопрос лежит здесь: .NET Core JSON сериализация свойств на динамическом (ExpandoObject)

Этот ответ для Core 1, вот как сделать то же самое с Core 2

// in Startup.cs
public void ConfigureServices(IServiceCollection services)
{
  . . .
  services.AddMvc().AddJsonOptions(options =>
  {
    options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
  });
  . . .
}
...