METTRE À JOUR
Merci pour toutes les réponses. Je suis sur un nouveau projet et il semble que je suis enfin arrivé au fond des choses: il semble que le code suivant était en fait à blâmer:
public static HttpResponseMessage GetHttpSuccessResponse(object response, HttpStatusCode code = HttpStatusCode.OK)
{
return new HttpResponseMessage()
{
StatusCode = code,
Content = response != null ? new JsonContent(response) : null
};
}
autre part...
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");
}
J'avais oublié le JsonContent à l'aspect inoffensif en supposant que c'était WebAPI mais non.
Ceci est utilisé partout ... Puis-je être le premier à dire, wtf? Ou peut-être que cela devrait être "Pourquoi font-ils cela?"
la question originale suit
On aurait pensé que ce serait un simple paramètre de configuration, mais cela m'échappe depuis trop longtemps.
J'ai examiné différentes solutions et réponses:
https://gist.github.com/rdingwall/2012642
ne semble pas s'appliquer à la dernière version de WebAPI ...
Ce qui suit ne semble pas fonctionner - les noms de propriétés sont toujours en PascalCased.
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.UseDataContractJsonSerializer = true;
json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
La réponse de Mayank ici: Les sous-objets CamelCase JSON WebAPI (objets imbriqués, objets enfants) semblaient être une réponse insatisfaisante mais réalisable jusqu'à ce que je réalise que ces attributs devraient être ajoutés au code généré car nous utilisons linq2sql ...
Un moyen de le faire automatiquement? Ce «méchant» me tourmente depuis longtemps maintenant.
JsonSerializer
. stackoverflow.com/questions/13274625/…