AKTUALIZACJA
Dzięki za wszystkie odpowiedzi. Jestem nad nowym projektem i wygląda na to, że w końcu dotarłem do sedna tego: Wygląda na to, że w rzeczywistości winien był następujący kod:
public static HttpResponseMessage GetHttpSuccessResponse(object response, HttpStatusCode code = HttpStatusCode.OK)
{
return new HttpResponseMessage()
{
StatusCode = code,
Content = response != null ? new JsonContent(response) : null
};
}
gdzie indziej...
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");
}
Przeoczyłem niewinnie wyglądający JsonContent, zakładając, że to WebAPI, ale nie.
To jest używane wszędzie ... Czy mogę być pierwszym, który powie, wtf? A może powinno to brzmieć „Dlaczego oni to robią?”
pojawia się oryginalne pytanie
Można by pomyśleć, że to proste ustawienie konfiguracji, ale teraz umykało mi to zbyt długo.
Patrzyłem na różne rozwiązania i odpowiedzi:
https://gist.github.com/rdingwall/2012642
wydaje się, że nie ma zastosowania do najnowszej wersji WebAPI ...
Poniższe wydaje się nie działać - nazwy właściwości są nadal PascalCased.
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.UseDataContractJsonSerializer = true;
json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Odpowiedź Mayanka tutaj: Podobiekty CamelCase JSON WebAPI (obiekty zagnieżdżone, obiekty potomne) wydawały się niezadowalającą, ale wykonalną odpowiedzią, dopóki nie zdałem sobie sprawy, że te atrybuty będą musiały zostać dodane do wygenerowanego kodu, ponieważ używamy linq2sql ...
Jakiś sposób, aby zrobić to automatycznie? To „paskudne” nęka mnie od dawna.