MVC JsonResult camelCase serializacja [duplikat]
To pytanie ma już tutaj odpowiedź:
Właściwa serializacja JSON w MVC 4 3 odpowiedziStaram się, aby moja akcja zwróciła JsonResult, w której wszystkie jej właściwości znajdują się w CamelCase.
Mam prosty model:
public class MyModel
{
public int SomeInteger { get; set; }
public string SomeString { get; set; }
}
I prosta akcja kontrolera:
public JsonResult Index()
{
MyModel model = new MyModel();
model.SomeInteger = 1;
model.SomeString = "SomeString";
return Json(model, JsonRequestBehavior.AllowGet);
}
Wywołanie tej metody działania zwraca teraz wynik JsonResult zawierający następujące dane:
{"SomeInteger":1,"SomeString":"SomeString"}
Do moich zastosowań potrzebuję akcji zwracającej dane w CamelCase, jakoś tak:
{"someInteger":1,"someString":"SomeString"}
Czy jest jakiś elegancki sposób na to?
Szukałem możliwych rozwiązań i znalazłemMVC3 JSON Serialization: jak kontrolować nazwy właściwości? gdzie ustawiają definicje DataMember dla każdej właściwości modelu, ale tak naprawdę nie chcę tego robić.
Znalazłem również link, w którym mówią, że możliwe jest rozwiązanie dokładnie tego rodzaju problemu:http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization#json_camelcasing. To mówi:
Aby zapisać nazwy właściwości JSON z obudową wielbłąda, bez zmiany modelu danych, ustaw CamelCasePropertyNamesContractResolver na serializatorze:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Jeden wpis na tym bloguhttp://frankapi.wordpress.com/2012/09/09/going-camelcase-in-asp-net-mvc-web-api/ wspomina również o tym rozwiązaniu i stwierdza, że można go po prostu dodać doRouteConfig.RegisterRoutes naprawić ten problem. Próbowałem tego, ale nie mogłem tego zrobić.
Czy macie jakiś pomysł, gdzie robiłem coś złego?