许多 SO 线程都介绍了在应用程序级别覆盖 Web API 的默认 JSON 序列化程序设置。但是我怎样才能在操作级别配置它的设置呢?例如,我可能想在我的一个操作中使用驼峰式属性进行序列化,而不是在其他操作中。
最佳答案
选项 1(最快)
在操作级别,您可以在使用 Json
方法时始终使用自定义 JsonSerializerSettings
实例:
public class MyController : ApiController
{
public IHttpActionResult Get()
{
var settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
var model = new MyModel();
return Json(model, settings);
}
}
选项 2( Controller 级别)
您可以创建一个新的 IControllerConfiguration
属性来自定义 JsonFormatter:
public class CustomJsonAttribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
var formatter = controllerSettings.Formatters.JsonFormatter;
controllerSettings.Formatters.Remove(formatter);
formatter = new JsonMediaTypeFormatter
{
SerializerSettings =
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
}
};
controllerSettings.Formatters.Insert(0, formatter);
}
}
[CustomJson]
public class MyController : ApiController
{
public IHttpActionResult Get()
{
var model = new MyModel();
return Ok(model);
}
}
关于c# - 网络 API : Configure JSON serializer settings on action or controller level,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44499041/