Web API 2: Rückgabe von JSON mit camelCased-Eigenschaftsnamen für Objekte und deren Unterobjekte

AKTUALISIERE

ielen Dank für alle Antworten. Ich arbeite an einem neuen Projekt und es sieht so aus, als ob ich dem endlich auf den Grund gegangen bin: Es sieht so aus, als wäre tatsächlich der folgende Code schuld:

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 verwendetüberal ... Kann ich nur der Erste sein, der das sagt, wtf? Oder vielleicht sollte das "Warum machen sie das?" Sein

original frage folgt

One hätte gedacht, dies wäre eine einfache Konfigurationseinstellung, aber sie ist mir jetzt zu lange entgangen.

Ich habe mir verschiedene Lösungen und Antworten angesehen:

https: //gist.github.com/rdingwall/201264

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) schien eine unbefriedigende, aber praktikable Antwort zu sein, bis mir klar wurde, dass diese Attribute zum generierten Code hinzugefügt werden müssten, da wir linq2sql verwenden ...

Wie mache ich das automatisch? Dieses "fiese" hat mich schon lange geplagt.

Antworten auf die Frage(18)

Ihre Antwort auf die Frage