ACTUALIZAR
Gracias por todas las respuestas. Estoy en un nuevo proyecto y parece que finalmente llegué al fondo de esto: parece que el siguiente código fue de hecho el culpable:
public static HttpResponseMessage GetHttpSuccessResponse(object response, HttpStatusCode code = HttpStatusCode.OK)
{
return new HttpResponseMessage()
{
StatusCode = code,
Content = response != null ? new JsonContent(response) : null
};
}
en otra parte...
public JsonContent(object obj)
{
var encoded = JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore } );
_value = JObject.Parse(encoded);
Headers.ContentType = new MediaTypeHeaderValue("application/json");
}
Había pasado por alto el JsonContent de aspecto inocuo asumiendo que era WebAPI, pero no.
Esto se usa en todas partes ... ¿Puedo ser el primero en decir, wtf? O tal vez debería ser "¿Por qué están haciendo esto?"
sigue la pregunta original
Uno hubiera pensado que esto sería una configuración de configuración simple, pero se me ha eludido durante demasiado tiempo.
He analizado varias soluciones y respuestas:
https://gist.github.com/rdingwall/2012642
no parece aplicarse a la última versión de WebAPI ...
Lo siguiente no parece funcionar: los nombres de las propiedades siguen siendo PascalCased.
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.UseDataContractJsonSerializer = true;
json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
La respuesta de Mayank aquí: Los subobjetos CamelCase JSON WebAPI (objetos anidados, objetos secundarios) parecían una respuesta insatisfactoria pero viable hasta que me di cuenta de que estos atributos tendrían que agregarse al código generado ya que estamos usando linq2sql ...
¿Alguna forma de hacer esto automáticamente? Este 'desagradable' me ha atormentado durante mucho tiempo.
JsonSerializer
. stackoverflow.com/questions/13274625/…