Właściwa serializacja JSON w MVC 4
Chciałbym mieć JSON „poprawnie” serializowany (camelCase) i możliwość zmiany formatów daty, jeśli to konieczne.
Dla Web API jest to bardzo proste - w Global.asax wykonuję następujący kod
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Ten kod, na poziomie potoku, obsługuje serializację w sposób, w jaki chciałbym.
Chciałbym osiągnąć to samo w MVC 4 - mieć zwrócone dowolne JSON z metod akcji kontrolera, aby były odpowiednio serializowane. Przy odrobinie poszukiwań znalazłem następujący kod do uruchomienia aplikacji 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() }
};
Wydaje się, że działa dobrze, ale gdy zwracam JSON z kontrolera, to wszystko jest PascalCased. Prosty przykład mojej metody działania:
private JsonResult GetJsonTest()
{
var returnData = dataLayer.GetSomeObject();
return Json(returnData, JsonRequestBehavior.AllowGet);
}
Czy robię to źle? Jakiś pomysł, jak to osiągnąć na poziomie rurociągu?