อัปเดต
ขอบคุณสำหรับคำตอบทั้งหมด ฉันอยู่ในโปรเจ็กต์ใหม่และดูเหมือนว่าในที่สุดฉันก็มาถึงจุดต่ำสุดของสิ่งนี้: ดูเหมือนว่ารหัสต่อไปนี้จะถูกตำหนิ:
public static HttpResponseMessage GetHttpSuccessResponse(object response, HttpStatusCode code = HttpStatusCode.OK)
{
return new HttpResponseMessage()
{
StatusCode = code,
Content = response != null ? new JsonContent(response) : null
};
}
ที่อื่น ...
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");
}
ฉันมองข้าม JsonContent ที่ดูไร้พิษภัยโดยสมมติว่าเป็น WebAPI แต่ไม่ใช่
นี่ใช้ได้ทุกที่ ... ขอเป็นคนแรกที่พูดได้ไหม wtf? หรือบางทีนั่นควรจะเป็น "ทำไมพวกเขาถึงทำเช่นนี้"
คำถามเดิมมีดังนี้
ใคร ๆ ก็คิดว่านี่จะเป็นการตั้งค่าคอนฟิกธรรมดา ๆ แต่ตอนนี้มันทำให้ฉันหายไปนานเกินไป
ฉันได้ดูวิธีแก้ปัญหาและคำตอบต่างๆ:
https://gist.github.com/rdingwall/2012642
ดูเหมือนจะใช้กับ WebAPI เวอร์ชันล่าสุดไม่ได้ ...
สิ่งต่อไปนี้ดูเหมือนจะใช้ไม่ได้ - ชื่อคุณสมบัติยังคงเป็น PascalCased
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.UseDataContractJsonSerializer = true;
json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
คำตอบของ Mayank ที่นี่: CamelCase JSON WebAPI Sub-Objects (วัตถุที่ซ้อนกันออบเจ็กต์ลูก)ดูเหมือนจะเป็นคำตอบที่ไม่น่าพอใจ แต่ใช้งานได้จนกว่าฉันจะรู้ว่าจะต้องเพิ่มแอตทริบิวต์เหล่านี้ในโค้ดที่สร้างขึ้นเนื่องจากเราใช้ linq2sql ...
วิธีใดในการดำเนินการนี้โดยอัตโนมัติ 'น่ารังเกียจ' นี้รบกวนฉันมานานแล้ว
JsonSerializer
ผลที่ได้คือเดียวกันที่แตกต่างเป็นที่ที่คุณฉีด stackoverflow.com/questions/13274625/…