কীভাবে জেসন সিরিয়ালাইজার সেটিংসকে এসপ নেট কোর 3 এ সেট করবেন?


29

উত্তরাধিকার asp.net কোর অ্যাপ্লিকেশনের জন্য JSON serializer সেটিংস যোগ করে সেট হয়েছিল AddMvc().AddJsonOptions(), কিন্তু আমি ব্যবহার করি না AddMvc()যে asp.net core 3। তাহলে আমি কীভাবে বিশ্বব্যাপী জসন সিরিয়ালাইজেশন সেটিংস সেট করতে পারি?


আপনি ব্যবহার না করেন তাহলে AddMvc, কি কি করতে আপনি ব্যবহার করবেন? আপনি কি উদাহরণ ব্যবহার করছেন AddControllersবা আপনি কেবল এমভিসি ব্যবহার করছেন না?
লারকিন

@ কিরক্লারকিন আমি এসপি নেট কোর 3 অ্যাপ তৈরির ডিফল্ট পদ্ধতি ব্যবহার করেছি - app.UseEndpoints(endpoints => { endpoints.MapControllers() })এবংservices.AddControllers();
অ্যালেক্স

ঠিক আছে, তাই আমি অনুমান আপনি ব্যবহার করছেন AddControllersমধ্যে ConfigureServices, ডান?
লারকিন

@ কির্কলার্কিন, হ্যাঁ, ঠিক আছে
অ্যালেক্স

উত্তর:


27

AddMvcএকটি IMvcBuilderবাস্তবায়ন ফিরিয়ে দেয় , যার সংশ্লিষ্ট AddJsonOptionsবর্ধিত পদ্ধতি রয়েছে। নতুন স্টাইলের পদ্ধতি AddControllers, AddControllersWithViewsএবং AddRazorPagesএছাড়াও একটি আসতে IMvcBuilderবাস্তবায়ন। এগুলির সাথে একইভাবে চেইন করুন যেমন আপনি চেইন করবেন AddMvc:

services.AddControllers()
    .AddJsonOptions(options =>
    {
        // ...
    });

মনে রাখবেন যে optionsএখানে আর Json.NET এর জন্য নয়, তবে নতুন এপিআইয়ের জন্য System.Text.Json। আপনি যদি এখনও Json.NET ব্যবহার করতে চান তবে টিমটামের উত্তর দেখুন



যুক্ত করা হচ্ছে "বিকল্পগুলি। জসনসিরালাইজারঅ্যাপশনস.আইগননুলভালুয়েস = সত্য;" কোন প্রভাব ছিল না
সায়েন্স

1
এনাম রূপান্তর খুঁজছেন যারা এই পৃষ্ঠাটিতে হিট করেছেন তাদের কাছে: [জসনকনভার্টার (টাইপফ (জসনস্ট্রিংইউনম কনভার্টার))] পাবলিক এনাম সুমইনাম
রাফা প্রানিয়ুক

23

বিকল্প এ। অ্যাডকন্ট্রোলার

এটি এখনও এমভিসি, এবং এর জন্য মাইক্রোসফ্ট.এস্পনেটকোর.এমভিসি.নউভটনসফটজসন নুগেট প্যাকেজ দরকার, তবে আপনি বলেছেন যে আপনি ব্যবহার করেছেন AddControllers

থেকে যোগ Newtonsoft.Json ভিত্তিক JSON ফর্ম্যাটে সমর্থন

services.AddControllers().AddNewtonsoftJson(options =>
{
    // Use the default property (Pascal) casing
    options.SerializerSettings.ContractResolver = new DefaultContractResolver();

    // Configure a custom converter
    options.SerializerOptions.Converters.Add(new MyCustomJsonConverter());
});

বিকল্প বি। ডিফল্টসেটেটিং

JsonConvert.DefaultSettings = () => new JsonSerializerSettings (...)

জসনকনভার্ট.ড্যাফল্টসেটিংস সম্পত্তি

ডিফল্ট জসনসিরিয়ালাইজারসেটিংস তৈরি করে এমন একটি ফাংশন পায় বা সেট করে। ডিফল্ট সেটিংসটি স্বয়ংক্রিয়ভাবে জসনকনভার্টে সিরিয়ালাইজেশন পদ্ধতি এবং জে টোকেনের টোঅবজেক্ট () এবং ফোরঅবজেক্ট (অবজেক্ট) দ্বারা স্বয়ংক্রিয়ভাবে ব্যবহৃত হয়। কোনও ডিফল্ট সেটিংস ব্যবহার না করেই সিরিয়ালাইজ করতে ক্রিয়েট () এর সাথে একটি জসনসিরাইজার তৈরি করুন।


হাই, এটি Json.NET স্তরে সেটিংস সেট করে, এটিএসপি.এনইটি স্তরে কীভাবে করা যায়?
অ্যালেক্স জায়টসেভ

এটি এএসপি.এনইটি স্তরে সেটিংস কনফিগার করে, যার অর্থ ডিফল্ট মডেলবাইন্ডিং এখন নিউটনসফটজসন সিরিয়ালাইজার ব্যবহার করে ঘটে।
মিস্টারক্লান

আপনাকে ধন্যবাদ, অপশন এ আমার জন্য কাজ করেছে। ২.২ থেকে ৩.১ এ আপগ্রেড হয়েছে এবং আমার System.Text.Jsonশেষের অবস্থানটি ভেঙে গেছে কারণ পলিমারফিজম বা এনামগুলি সঠিকভাবে পরিচালনা করে না। ডিফল্ট সিরিয়ালাইজার পরিবর্তন করার জন্য দুর্দান্ত উপায়।
অচল_ভয়েড

15

নিউটোনসফ্ট যুক্ত করা প্রয়োজনীয় নয়, নেট কোর 3.0.০ প্রকল্পে নিউটনসফট সামঞ্জস্যতা প্যাকেজ যুক্ত করার ক্ষেত্রে বেশ সমস্যা।

Https://github.com/aspnet/AspNetCore/issues/13564 এও দেখুন

অবশ্যই, কেউ PascalCaseএই মুহুর্তে সম্পত্তি নামকরণ , এনএ উদযাপন করবে ... সুতরাং প্যাসকেলকেসের nullজন্য PropertyNamingPolicyএটি অবশ্যই খুব ভাল নয়।

// Pascal casing
services.AddControllersWithViews().
        AddJsonOptions(options =>
        {
            options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
            options.JsonSerializerOptions.PropertyNamingPolicy = null;
        });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.