ASP.NET ওয়েব API এ নাল মান সহ বৈশিষ্ট্যগুলি দমন করুন


97

আমি একটি এএসপি. নেট ওয়েব এপিআই প্রকল্প তৈরি করেছি যা একটি মোবাইল অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হবে। নাল বৈশিষ্ট্যগুলি সেগুলি হিসাবে ফিরিয়ে দেওয়ার পরিবর্তে বাদ দিতে আমার প্রতিক্রিয়া জেএসন দরকার property: null

কিভাবে আমি এটি করতে পারব?

উত্তর:


133

ইন 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);

4
লজ্জা কনফিগারেশন.ফর্ম্যাটরস.এক্সএমএল ফর্ম্যাটারের একই সম্পত্তি নেই ...: /
RoboJ1M

9
যেহেতু Json.NET 5 (পূর্ববর্তী সংস্করণগুলির জন্য নিশ্চিত নয়), আপনি এটিও করতে পারেন: config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore- এটি অন্য কোনও জসন সিরিয়ালাইজেশন সেটিংস পুনরায় সেট না করে (বৈশিষ্ট্যের প্রথম অক্ষরে লোয়ার কেস ব্যবহার করার মত) নাল মান হ্যান্ডলিং আপডেট করবে
আইভায়লো স্লাভভ

7
এটি কি কেবল একটি একক সম্পত্তির জন্য করা সম্ভব?
মার্টিন ব্রাউন

4
দ্য নালভ্যালুহ্যান্ডলিং = নালভ্যালুহ্যান্ডলিং gnআপনার ফলাফলের জন্য কাজ করেন না
নাথান ট্রেগিলাস

4
যদি পরিবর্তন একটি প্রতি-সম্পত্তি ভিত্তিতে ঘটা উচিত, এবং এক Json.Net একটি পর্যাপ্ত নতুন সংস্করণ ব্যবহার করছে, এক সম্পত্তি এই বৈশিষ্ট্য ব্যবহার করতে পারেন: [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
কার্স্টেন ফারহম্যান

32

আমি এএসপি.নেট ৫.০.০-বিটা using ব্যবহার করে স্টার্টআপ.সি ফাইলগুলিতে কোডের এই অংশটি দিয়ে শেষ করেছি

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


5

আপনি যদি vnext ব্যবহার করছেন, vnext ওয়েব এপিআই প্রকল্পগুলিতে, এই কোডটি 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)]গুণাবলী করতে পারেন


4
এটি একমাত্র উত্তর যা এক্সএমএল এবং জসন উভয় প্রতিক্রিয়া জুড়ে।
কলম্যানজে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.