У меня есть верблюжий корпус, сконфигурированный как выход JSON по умолчанию из библиотеки Newtonsoft. В следующей строке вызывается во время Application_Start:Newtonsoft JSON по желанию изменить кожух полезной нагрузки WebAPI 2
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Все REST Javascript звонки на WebAPIs (с использованием WebAPI 2) работают нормально и вернуть верблюд обсаженных JSON строки клиенту.
Теперь я использую JTable управления (http://www.jtable.org) на одном из моих веб-страницах, и этот контроль требует, чтобы JSON полезной нагрузки возвращается в Proper Case. Итак, вопроскак можно изменить WebAPI, чтобы вернуть полезную нагрузку на полезный случай JSON, даже если конфигурация по умолчанию через Application_Start установлена на верблюжьем корпусе, не изменяя значения глобального значения по умолчанию? Мне нужен правильный случай. Полезная нагрузка JSON возвращается только для этого одного вызова WebAPI в приложении.
Я пробовал [http://fizzylogic.nl/2014/07/30/changing-the-casing-of-json-properties-in-asp-dot-net-web-api/] это, но я не смог получить ActionFilterAttribute.OnActionExecuting для запуска. Поэтому решение не сработало.
Я также добавил следующую строку кода в методе WebAPI
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new JsonContractResolver(new JsonMediaTypeFormatter());
Это работает, но Надлежащая случай теперь становится форматом по умолчанию для других вызовов WebAPI.
Вот что WebAPI фрагмент
public JTableDtoImpl Get(int id, int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = "") {
List<MobileOrderModel> orders = _svc.GetMobileOrders(id);
var dto = new JTableDtoMobileOrdersImpl(orders, jtStartIndex, jtPageSize) {
Message = string.Format("DataSource:{0}", _svc.DataSource)
};
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new JsonContractResolver(new JsonMediaTypeFormatter());
return dto;
}
Проблема здесь в том, что теперь я не могу вернуться к дефолту ГорбатыйРегистр форматирования, так как метод вернулся к тому времени.
Любые другие предложения?
возможно дубликат [Return camelCased JSON из веб-API] (HTTP: // stackoverflow.com/questions/26474436/return-camelcased-json-from-web-api) – dotctor
Если у вас есть три метода, скажем A, B и C, нужна ли вам динамическая модификация дела по любым/всем методам или вам нужно всего лишь запустить Паскаль для метода C всегда? –
Мне нужно запустить Pascal case только для метода C (всегда). Другие методы должны продолжать использовать настройки по умолчанию для верблюжьего случая. – sandor