2016-04-11 10 views
5

में धारावाहिक से शून्य और डिफ़ॉल्ट मान को अनदेखा करें, मैं उन संपत्तियों को अनदेखा करना चाहता हूं जो जेसन सीरियलाइजिंग से शून्य हैं। इस के लिए मैंने इस लाइन को मेरी webapi.config फ़ाइल में जोड़ा।वेब एपीआई

config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore}; 

public static void Register(HttpConfiguration config) 
     {   
      config.SuppressDefaultHostAuthentication(); 
      config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); 
      config.MapHttpAttributeRoutes(); 
      config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{action}/{identifier}", 
       defaults: new { identifier = RouteParameter.Optional } 
      ); 
      config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling= DefaultValueHandling.Ignore }; 
     } 

लेकिन यह उन संपत्तियों को अनदेखा नहीं कर रहा है जो शून्य हैं।

यह मेरी कक्षा

public class UserProfile 
    { 
     [JsonProperty("fullname")] 
     public string FullName { get; set; } 

     [JsonProperty("imageid")] 
     public int ImageId { get; set; } 

     [JsonProperty("dob")] 
     public Nullable<DateTime> DOB { get; set; } 
    } 

है यह जाल एपीआई

{ 
    "fullname": "Amit Kumar", 
    "imageid": 0, 
    "dob": null 
} 

मैं जन्म तिथि और imageid का मूल्य नहीं सौंपा है से Json वापसी है।

मैं इस Link का पालन करता हूं, लेकिन यह मेरी समस्या का समाधान नहीं करता है।

+0

आप किसी भी वस्तु आप को क्रमानुसार या आप चुनिंदा तय करने की आवश्यकता है में हर अशक्त प्रॉपर्टी को नकारने करना चाहते हैं अनदेखी करने के लिए एक शून्य मूल्य के साथ कौन सी संपत्ति? –

+0

@FedericoDipuma: मैं इसे हर ऑब्जेक्ट में अनदेखा करना चाहता हूं, यही कारण है कि मैंने इसे वैश्विक रूप से जोड़ा। –

+0

@ मोस्टाफिजुररहमान: नहीं। यह एक डुप्लिकेट प्रश्न नहीं है। –

उत्तर

0

Newtonsoft.Json source code पर देखकर मेरा मानना ​​है कि JsonPropertyAttribute आपकी कक्षा गुणों को सजाने वाले में निर्दिष्ट NullValueHandling को ओवरराइड कर रहा है।

या तो इस तरह के गुण हटाने या स्पष्ट रूप से NullValueHandling निर्दिष्ट (आप विश्व स्तर पर परिभाषित NullValueHandling उपयोग करना चाहते हैं):

public class UserProfile 
{ 
    [JsonProperty("fullname")] 
    public string FullName { get; set; } 

    [JsonProperty("imageid")] 
    public int ImageId { get; set; } 

    [JsonProperty("dob", NullValueHandling = NullValueHandling.Ignore)] 
    public Nullable<DateTime> DOB { get; set; } 
} 
+0

मैंने उन जेसनप्रोपर्टी को हटा दिया, लेकिन फिर भी समस्या एक जैसी है। –

+0

यह वास्तव में एक अजीब व्यवहार है। मैंने इस मुद्दे को एक नई वेब एपीआई परियोजना में पुन: उत्पन्न करने की कोशिश की, लेकिन सब कुछ ठीक काम कर रहा है। वर्तमान जानकारी के साथ मुझे गलत क्या हो सकता है इसके बारे में कोई जानकारी नहीं है। प्रश्न में अपनी Startup.cs या Global.asax.cs फ़ाइल की सामग्री जोड़ने का प्रयास करें। –

+0

यह gloabal.asax फ़ाइल जोड़ने के बाद काम किया। –