我正在尝试配置一个区域,以便为ASP.Net项目中新创建的区域使用一些自定义JSON序列化程序设置。我正在编写一个Web API控制器。
不幸的是,我无法影响整个项目(许多遗留代码),否则我就会这么做:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
json.SerializerSettings.Converters = new List<JsonConverter>() { new StringEnumConverter() };
但是我可以改变这个新领域,但我觉得合适。
是否有可能以与上述代码类似的方式配置这个新区域(还有其他我不想影响的区域)?
答案 0 :(得分:4)
JsonResult
的类。编写逻辑以在此类中实现所需的序列化程序。Json
方法以返回自定义JsonResult
。BaseController
示例:强>
public abstract class BaseController : Controller
{
protected override JsonResult Json(object data, string contentType, Encoding contentEncoding, JsonRequestBehavior behavior)
{
return new MySpecialJsonResult //Inherits from JsonResult and contains the desired serializer implementation
{
Data = data,
ContentType = contentType,
ContentEncoding = contentEncoding,
JsonRequestBehavior = behavior
};
}
}
public class EmployeeController : BaseController
{
public JsonResult Index()
{
//Your custom serializer will be used...
return Json(new{Text="Hello"},JsonRequestBehavior.AllowGet);
}
}