Sto cercando di rendere la mia azione restituire un JsonResult in cui tutte le sue proprietà sono in camelCase.MVC JsonResult camelCase serialization
Ho un modello semplice:
public class MyModel
{
public int SomeInteger { get; set; }
public string SomeString { get; set; }
}
E una semplice azione di controllo:
public JsonResult Index()
{
MyModel model = new MyModel();
model.SomeInteger = 1;
model.SomeString = "SomeString";
return Json(model, JsonRequestBehavior.AllowGet);
}
chiamata a questo metodo di azione ora restituisce un JsonResult contenente i seguenti dati:
{"SomeInteger":1,"SomeString":"SomeString"}
Per i miei usi ho bisogno che l'azione restituisca i dati in camelCase, in qualche modo come questo:
{"someInteger":1,"someString":"SomeString"}
C'è un modo elegante per farlo?
Stavo cercando le soluzioni possibili da queste parti e ho trovato MVC3 JSON Serialization: How to control the property names? dove hanno impostato le definizioni DataMember su ogni proprietà del modello, ma in realtà non voglio farlo.
Inoltre ho trovato un collegamento dove si dice che è possibile risolvere esattamente questo tipo di problema: http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization#json_camelcasing. Dice:
Per scrivere nomi di proprietà JSON con involucro cammello, senza cambiare il modello di dati, impostare il CamelCasePropertyNamesContractResolver sulla serializzatore:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Una voce su questo blog http://frankapi.wordpress.com/2012/09/09/going-camelcase-in-asp-net-mvc-web-api/ mentiones anche questa soluzione e gli stati puoi semplicemente aggiungerlo al numero RouteConfig.RegisterRoutes per risolvere questo problema. L'ho provato, ma non riuscivo a farlo funzionare.
Ragazzi, avete idea di dove stavo facendo qualcosa di sbagliato?
Cosa significa "l'ho provato, ma non riuscivo a farlo funzionare".? – nemesv
Ho aggiunto questo snippet di codice al metodo RouteConfig.RegisterRoutes ma sembrava non avere alcun effetto perché JsonResult conteneva ancora gli stessi dati. –
FYI, il 'CamelCasePropertyNamesContractResolver' funziona solo con i controller WebAPI (controller che estendono' ApiController'). – danludwig