AKTUALISIEREN
Danke für alle Antworten. Ich bin in einem neuen Projekt und es sieht so aus, als wäre ich endlich auf den Grund gegangen: Es sieht so aus, als ob der folgende Code tatsächlich schuld war:
public static HttpResponseMessage GetHttpSuccessResponse(object response, HttpStatusCode code = HttpStatusCode.OK)
{
return new HttpResponseMessage()
{
StatusCode = code,
Content = response != null ? new JsonContent(response) : null
};
}
anderswo...
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");
}
Ich hatte den harmlos aussehenden JsonContent übersehen, vorausgesetzt, es war WebAPI, aber nein.
Dies wird überall verwendet ... Kann ich nur der Erste sein, der sagt, wtf? Oder vielleicht sollte das lauten: "Warum machen sie das?"
ursprüngliche Frage folgt
Man hätte gedacht, dass dies eine einfache Konfigurationseinstellung wäre, aber sie ist mir jetzt zu lange entgangen.
Ich habe mir verschiedene Lösungen und Antworten angesehen:
https://gist.github.com/rdingwall/2012642
scheint nicht auf die neueste WebAPI-Version zuzutreffen ...
Folgendes scheint nicht zu funktionieren - Eigenschaftsnamen sind immer noch PascalCased.
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.UseDataContractJsonSerializer = true;
json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Mayanks Antwort hier: CamelCase JSON WebAPI- Unterobjekte (verschachtelte Objekte, untergeordnete Objekte) schienen eine unbefriedigende, aber praktikable Antwort zu sein, bis mir klar wurde, dass diese Attribute dem generierten Code hinzugefügt werden müssen, da wir linq2sql verwenden ...
Wie kann man das automatisch machen? Dieses "böse" hat mich schon lange geplagt.
JsonSerializer
. stackoverflow.com/questions/13274625/…