MEMPERBARUI
Terima kasih atas semua jawabannya. Saya sedang dalam proyek baru dan sepertinya saya akhirnya sampai di dasar ini: Sepertinya kode berikut sebenarnya yang harus disalahkan:
public static HttpResponseMessage GetHttpSuccessResponse(object response, HttpStatusCode code = HttpStatusCode.OK)
{
return new HttpResponseMessage()
{
StatusCode = code,
Content = response != null ? new JsonContent(response) : null
};
}
di tempat lain...
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");
}
Saya telah mengabaikan JsonContent yang tampak tidak berbahaya dengan asumsi itu adalah WebAPI tetapi tidak.
Ini digunakan di mana-mana ... Bisakah saya menjadi yang pertama mengatakan, wtf? Atau mungkin itu seharusnya menjadi "Mengapa mereka melakukan ini?"
pertanyaan asli berikut
Orang akan mengira ini akan menjadi pengaturan konfigurasi sederhana, tetapi itu terlalu lama untuk saya sekarang.
Saya telah melihat berbagai solusi dan jawaban:
https://gist.github.com/rdingwall/2012642
tampaknya tidak berlaku untuk versi WebAPI terbaru ...
Berikut ini tampaknya tidak berhasil - nama properti masih PascalCased.
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.UseDataContractJsonSerializer = true;
json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Jawaban Mayank di sini: Sub-Objek CamelCase JSON WebAPI (Objek bersarang, objek anak) tampak seperti jawaban yang tidak memuaskan tetapi bisa diterapkan sampai saya menyadari atribut ini harus ditambahkan ke kode yang dihasilkan karena kami menggunakan linq2sql ...
Adakah cara untuk melakukan ini secara otomatis? 'Jahat' ini telah mengganggu saya sejak lama.
JsonSerializer
. stackoverflow.com/questions/13274625/…