Hola a todos, hoy simplemente un sencillo tip para personalizar el JSON de respuesta en notación CamelCase, la cual utiliza JavaScript.


El ejemplo es bastante sencillo, partimos de un modelo como el siguiente:


public class Customer
{
    public int Id { get; set; }

    public string Name { get; set; }

    public string LastName { get; set; }

    public string Email { get; set; }
}

Y un controlador que retorne un conjunto de resultados:


public class CustomersController : ApiController
{
    private readonly List customers = new List()
    {
        new Customer() {Id = 1, Name= "Kevyn", LastName= "Brown", Email= "fringilla.cursus@at.ca"},
        new Customer() {Id = 2, Name= "Emery", LastName= "Mcclure", Email= "quam@fames.net"},
        new Customer() {Id = 3, Name= "Seth", LastName= "Patrick", Email= "adipiscing.elit@nec.net"},
        new Customer() {Id = 4, Name= "Lawrence", LastName= "Wilcox", Email= "ridiculus@NulladignissimMaecenas.ca"},
        new Customer() {Id = 5, Name= "Ferdinand", LastName= "Herring", Email= "id@velpedeblandit.org"}
    };

    public IHttpActionResult Get()
    {
        return Ok(customers);
    }
}

Ahora, al probar dicho controlador obtenemos el conjunto de resultados, con el la primera letra en mayúscula, es decir, no cumple con la notación CamelCase:

No CamelCase Format

Para ajustar dicha serialización, basta con especificarla en el WebApiConfig con la siguiente línea:


var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault();
    if (jsonFormatter != null)
        jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

Y al volver a probar:

CamelCase Format

Espero les sea de utilidad, saludos!