我希望能够以“正确的方式”(驼峰命名法)对JSON进行序列化,并且如有必要,能够更改日期格式。
对于Web API来说,非常容易 - 在Global.asax文件中执行以下代码即可:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
在管道级别,这段代码处理序列化的方式是我想要的。
我希望在MVC 4中实现相同的功能 - 让控制器操作方法返回的任何JSON都能得到正确的序列化。通过一点搜索,我找到了以下代码可以添加到Global.asax应用启动中:
HttpConfiguration config = GlobalConfiguration.Configuration;
Int32 index = config.Formatters.IndexOf(config.Formatters.JsonFormatter);
config.Formatters[index] = new JsonMediaTypeFormatter
{
SerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }
};
代码看起来执行得很好,但是从控制器返回JSON时会全都变成PascalCased。这是我的一个action方法的简单示例:
private JsonResult GetJsonTest()
{
var returnData = dataLayer.GetSomeObject();
return Json(returnData, JsonRequestBehavior.AllowGet);
}
我这样做错了吗?有什么方法可以在管道级别上完成这个任务吗?