ASP.NET वेब एपीआई पर अशक्त मान के साथ गुण दबाएं


94

मैंने एक ASP.Net WEB API प्रोजेक्ट बनाया है जिसका उपयोग मोबाइल एप्लिकेशन द्वारा किया जाएगा। मुझे बदले में उन्हें वापस करने के बजाय अशक्त गुणों को छोड़ने के लिए जवाबी कार्रवाई की आवश्यकता है property: null

मैं यह कैसे कर सकता हूँ?

जवाबों:


132

में WebApiConfig:

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

या, यदि आप अधिक नियंत्रण चाहते हैं, तो आप पूरे फ़ॉर्मेटर को बदल सकते हैं:

var jsonformatter = new JsonMediaTypeFormatter
{
    SerializerSettings =
    {
        NullValueHandling = NullValueHandling.Ignore
    }
};

config.Formatters.RemoveAt(0);
config.Formatters.Insert(0, jsonformatter);

2
शर्म की बात है। Formatters.XmlFormatter के पास एक ही प्रॉपर्टी नहीं है ...:
RoboJ1M

8
चूंकि Json.NET 5 (पिछले संस्करणों के लिए निश्चित नहीं है), आप यह भी कर सकते हैं: config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore- यह बिना किसी अन्य json क्रमांकन सेटिंग्स (गुणों के पहले अक्षर पर निचले मामले का उपयोग करके) को रीसेट किए बिना अशक्त मान को अद्यतन करेगा
Ivaylo Slavive

7
क्या इसे केवल एक संपत्ति के लिए करना संभव है?
मार्टिन ब्राउन

1
NullValueHandling = NullValueHandling.Ignore ने मेरे परिणामों के लिए काम नहीं किया
नाथन ट्रेगिलस

2
यदि परिवर्तन प्रति-संपत्ति के आधार पर होना चाहिए, और एक Json.Net के पर्याप्त नए संस्करण का उपयोग कर रहा है, तो कोई संपत्ति पर इस विशेषता का उपयोग कर सकता है [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]:।
कार्स्टन फुर्रमैन

32

मैंने ASP.NET5 1.0.0-beta7 का उपयोग कर स्टार्टअप.के फ़ाइल में कोड के इस टुकड़े के साथ समाप्त किया

services.AddMvc().AddJsonOptions(options =>
{
    options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});


4

यदि आप vnext का उपयोग कर रहे हैं, vnext web api परियोजनाओं में, इस कोड को startup.cs फ़ाइल में जोड़ें।

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().Configure<MvcOptions>(options =>
        {
            int position = options.OutputFormatters.FindIndex(f =>  f.Instance is JsonOutputFormatter);

            var settings = new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore
            };

            var formatter = new JsonOutputFormatter();
            formatter.SerializerSettings = settings;

            options.OutputFormatters.Insert(position, formatter);
        });

    }

4

आप भी उपयोग कर सकते हैं [DataContract]और [DataMember(EmitDefaultValue=false)]विशेषताएँ


1
यह एकमात्र ऐसा उत्तर है जो xml और json प्रतिक्रिया दोनों को कवर करता है।
14
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.