अपडेट करें
सारे सवालों के जवाब देने के लिए धन्यवाद। मैं एक नई परियोजना पर हूं और ऐसा लग रहा है कि मैं आखिरकार इस की तह तक पहुंच गया हूं: ऐसा लगता है कि निम्नलिखित कोड वास्तव में दोष देने के लिए था:
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 को यह मानते हुए अनदेखा कर दिया था कि यह वेबएपीआई है लेकिन नहीं।
यह हर जगह उपयोग किया जाता है ... क्या मैं सिर्फ कहने के लिए पहले हो सकता हूं, wtf? या शायद यह होना चाहिए कि "वे ऐसा क्यों कर रहे हैं?"
मूल प्रश्न इस प्रकार है
एक ने सोचा होगा कि यह एक साधारण विन्यास सेटिंग होगी, लेकिन यह मुझे बहुत लंबे समय के लिए हटा दिया गया है।
मैंने विभिन्न समाधानों और उत्तरों को देखा है:
https://gist.github.com/rdingwall/2012642
नवीनतम WebAPI संस्करण पर लागू नहीं होता है ...
निम्नलिखित काम नहीं करता है - संपत्ति के नाम अभी भी पास्कल्ड हैं।
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.UseDataContractJsonSerializer = true;
json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
मयंक का जवाब यहां: CamelCase JSON WebAPI उप-ऑब्जेक्ट्स (नेस्टेड ऑब्जेक्ट्स, चाइल्ड ऑब्जेक्ट्स) एक असंतोषजनक लेकिन व्यावहारिक जवाब की तरह लग रहे थे, जब तक मुझे एहसास नहीं हुआ कि इन विशेषताओं को उत्पन्न कोड में जोड़ना होगा क्योंकि हम linqlqql का उपयोग कर रहे हैं ...
किसी भी तरह से यह स्वचालित रूप से करने के लिए? इस 'गंदा' ने मुझे लंबे समय से परेशान किया है।
JsonSerializer
। stackoverflow.com/questions/13274625/…