Я пытаюсь вернуть свое действие JsonResult, где все его свойства находятся в camelCase.
У меня простая модель:
public class MyModel
{
public int SomeInteger { get; set; }
public string SomeString { get; set; }
}
И простое действие контроллера:
public JsonResult Index()
{
MyModel model = new MyModel();
model.SomeInteger = 1;
model.SomeString = "SomeString";
return Json(model, JsonRequestBehavior.AllowGet);
}
Вызов этого метода действий теперь возвращает JsonResult, содержащий следующие данные:
{"SomeInteger":1,"SomeString":"SomeString"}
Для моих целей мне нужно, чтобы действие возвращало данные в camelCase, так или иначе:
{"SomeInteger":1,"SomeString":"SomeString"}
Есть ли элегантный способ сделать это?
Я искал возможные решения здесь и нашел MVC3 JSON Serialization: как управлять именами свойств?, где они устанавливали определения DataMember для каждого свойства модели, но я действительно не хочу этого делать.
Также я нашел ссылку, в которой говорится, что можно решить именно такую проблему: http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization#json_camelcasing. В нем говорится:
Чтобы написать имена свойств JSON с корпусом верблюда, не изменяя модель данных, установите CamelCasePropertyNamesContractResolver в сериализаторе:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Одна запись в этом блоге http://frankapi.wordpress.com/2012/09/09/going-camelcase-in-asp-net-mvc-web-api/ также упоминает это решение и заявляет, что вы можете просто добавить его в RouteConfig.RegisterRoutes, чтобы исправить эту проблему. Я попробовал, но я не мог заставить его работать.
Вы, ребята, знаете, где я делаю что-то неправильно?