GÜNCELLEME
Tüm cevaplar için teşekkürler. Yeni bir projedeyim ve görünüşe göre sonunda bunun altına inmişim: Görünüşe göre şu kod aslında suçluydu:
public static HttpResponseMessage GetHttpSuccessResponse(object response, HttpStatusCode code = HttpStatusCode.OK)
{
return new HttpResponseMessage()
{
StatusCode = code,
Content = response != null ? new JsonContent(response) : null
};
}
başka yerde ...
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");
}
WebAPI olduğunu ancak hayır olduğunu varsayarak zararsız görünen JsonContent'i gözden kaçırmıştım.
Bu her yerde kullanılıyor ... İlk söyleyen ben olabilir miyim, wtf? Veya belki de "Bunu neden yapıyorlar?"
orijinal soru takip eder
Bunun basit bir yapılandırma ayarı olacağı düşünülürdü, ancak artık çok uzun süredir benden kaçtı.
Çeşitli çözümlere ve cevaplara baktım:
https://gist.github.com/rdingwall/2012642
en son WebAPI sürümü için geçerli görünmüyor ...
Aşağıdakiler işe yaramıyor gibi görünüyor - özellik adları hala PascalCased.
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.UseDataContractJsonSerializer = true;
json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Mayank'ın cevabı: CamelCase JSON WebAPI Alt Nesneleri (İç içe geçmiş nesneler, alt nesneler) tatmin edici görünmüyordu, ancak bu özniteliklerin linq2sql kullandığımız için oluşturulan koda eklenmesi gerektiğini anlayana kadar uygulanabilir bir cevap gibi görünüyordu ...
Bunu otomatik olarak yapmanın bir yolu var mı? Bu "iğrenç" uzun zamandır beni rahatsız ediyor.