Мой атрибут фильтра пользовательских действий для преобразования JSON-ответа ядра webApi MVC из camelCase в pascalCase не работает.
Попытка с использованием:
services.AddMvc()
.AddJsonOptions(options =>
options.SerializerSettings.ContractResolver = new DefaultContractResolver());
Однако этовид глобального параметра изменяет всю реакцию на случай Паскаля. Я хочу изменить только ограниченный ответ API на регистр Паскаля.
Пользовательский ActionFilterAttribute
:
public class CancelCamelCaseResolverConfigurationAttribute : ActionFilterAttribute
{
public override void OnResultExecuted(ResultExecutedContext context)
{
base.OnResultExecuted(context);
var objectResult = context.Result as ObjectResult;
if (objectResult != null)
{
objectResult.Formatters.Clear();
objectResult.Formatters.Add(new JsonOutputFormatter(
new JsonSerializerSettings()
{
Formatting = Formatting.None,
ContractResolver = new DefaultContractResolver()
}, ArrayPool<char>.Shared));
}
}
}
И использовать в контроллере webApi:
[CancelCamelCaseResolverConfiguration]
public class FrmMainSearchController : AtlasApiController<FrmMainSearchController>
{
/*Api*/
}
Ожидаетсярезультат:
searchCriteria = [{Key: "xx", Value: "yy"}]
Фактический результат:
searchCriteria = [{key: "xx", value: "yy"}]