জেএসএন বৈশিষ্ট্যগুলি এখন এএসপি। নেট কোর 1.0.0-আরসি 2-ফাইনাল থেকে 1.0.0 এ অদলবদলে কেস হ্রাস করবে


90

আমি সবেমাত্র আমাদের প্রকল্পটি এএসপি। নেট কোর 1.0.0-আরসি 2-ফাইনাল থেকে 1.0.0 এ সরিয়ে নিয়েছি। আমাদের ওয়েবসাইট এবং ক্লায়েন্ট জেএসএন বৈশিষ্ট্যগুলির মূলধনের কারণে কাজ বন্ধ করে দিয়েছে। উদাহরণস্বরূপ, জাভাস্ক্রিপ্টের এই লাইনটি এখন ব্যর্থ

for (var i = 0; i < collection.Items.length; i++){

কারণ কন্ট্রোলার এখন অ্যারেটিকে "আইটেম" এর পরিবর্তে "আইটেম" বলে। আপডেট হওয়া প্যাকেজগুলি ইনস্টল করা এবং প্রজেক্ট.জসন ফাইল সম্পাদনা করার বাইরে আমি কোনও পরিবর্তন করেছি। আমি সি # মডেল ফাইলগুলি পরিবর্তন করি নি যা এখনও তাদের সম্পত্তিকে বড় করে দেয়।

কেন এএসপি.নেট কোর নিয়ন্ত্রকরা নিম্ন-কেসযুক্ত সম্পত্তি দিয়ে জেএসএন ফেরত দেওয়া শুরু করেছেন? মডেল থেকে সম্পত্তির নামের ক্ষেত্রে সম্মান জানাতে আমি কীভাবে তাদের কাছে ফিরে যেতে পারি?



4
আপনার মধ্যে যারা উত্তর খুঁজছেন তাদের জন্য। নেট কোর 3 আপনাকে পৃষ্ঠার নীচে স্ক্রোল করতে হবে।
মাইক ডেভেন্নি

উত্তর:


157

এমভিসি এখন ডিফল্টরূপে উটের মামলার নাম দিয়ে জেএসএনকে সিরিয়াল করে

ডিফল্টরূপে উটের মামলার নামগুলি এড়ানোর জন্য এই কোডটি ব্যবহার করুন

  services.AddMvc()
        .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

সূত্র: https://github.com/aspnet/Announcements/issues/194


8
নেটকোর 2: নিউটনসফট.জসন.সরিয়ালাইজেশন ব্যবহার;
ডেভিড.বারখুইজেন

4
আমি আমার সমস্ত JSON সিরিয়ালাইজেশন পরিবর্তন করতে চাই না , কেবলমাত্র একটি বিশেষ কেস যা কিছু তৃতীয় পক্ষের সফ্টওয়্যার এর আচরণের সাথে মেলে। Json()কলটির দ্বিতীয় প্যারামিটারে কীভাবে একজন সঠিক সিরিয়ালাইজেশন সেটিংস সরবরাহ করে ?
অস্পেক্স

79

আপনি যদি গুগল থেকে এটি খুঁজে পেয়েছেন এবং কোর 3 এর সমাধান খুঁজছেন।

কোর 3 ব্যবহার করে System.Text.Json, যা ডিফল্টরূপে কেস সংরক্ষণ করে না। এই গিটহাব ইস্যুটির সাথে যেমন উল্লেখ করা হয়েছে , তেমনটি নির্ধারণ করা PropertyNamingPolicyসমস্যার সমাধান করবে।

public void ConfigureServices(IServiceCollection services)
{
...
    services.AddControllers()
            .AddJsonOptions(opts => opts.JsonSerializerOptions.PropertyNamingPolicy = null);

এবং আপনি যদি বিশ্বব্যাপী সেটিংস পরিবর্তন করতে না চান তবে একটি ক্রিয়াকলাপের জন্য কেবল এটি এর মতো:

return Json(obj, new JsonSerializerOptions { PropertyNamingPolicy = null });

8
আপনি আমার প্রভু এবং ত্রাণকর্তা
জন্টি মরিস

4
এটি কোর ৩.১ এ আমার পক্ষে ভাল কাজ করেছে। আমি আমার কেন্দো উপাদানগুলি সঠিকভাবে কাজ করতে পারি না এবং জেসনকে উটের কেস ফর্ম্যাট করতে পেলাম। এটি সমস্যার সমাধান করেছে।
ওয়ারাগি

আমিও আপনার বিষয়
জোও লুরিরো


9

যারা কোর ৩.১ এ মাইগ্রেট করেছেন এবং কোর এমভিসি প্রকল্প রয়েছে তাদের জন্য স্টার্টআপ.সিটিতে নিম্নলিখিত সেটআপ কোডটি ব্যবহার করতে পারেন:


        public void ConfigureServices(IServiceCollection services)
        {
            ...
            services.AddControllersWithViews().AddJsonOptions(opts => opts.JsonSerializerOptions.PropertyNamingPolicy = null);
            ...
        }

এটি পূর্বের উত্তর হিসাবে একই হ'ল স্ট্যাকওভারফ্লো.com
মার্ক শুলথিস

@ মার্কসচল্টহিস আপনি সম্ভবত সঠিক, কারণ আমার উত্তরটি অন্য সমস্তগুলির মতো, তবে আমি যখন আমার প্রকল্পের ধরণের ভিত্তিতে যথাযথ উত্তর অনুসন্ধান করছিলাম, যা এমভিসি দৃষ্টিভঙ্গি ব্যবহার করছে, তখন আমার প্রকল্পটির সাথে সঠিক উত্তর খুঁজে পাইনি। অ্যাডকন্ট্রোলার উইথভিউস () এই অনুপস্থিত অংশটিকে যুক্ত করে এবং আমি ভেবেছিলাম এটি ভবিষ্যতে যে কারও পক্ষে কার্যকর হবে। যদিও আপনার মন্তব্যের জন্য আপনাকে ধন্যবাদ!
ইউওয়াই

3

এটি এটি ডটনেট কোর 3 ওয়েবপিতে স্থির করবে, যাতে এটি আপনার সম্পত্তির নামটি একেবারে পরিবর্তন না করে এবং আপনি নিজের ক্লায়েন্টের কাছে ঠিক কী ইচ্ছা করে ফিরে আসেন।

প্রারম্ভকালে:

public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers().AddJsonOptions(options => options.JsonSerializerOptions.PropertyNamingPolicy = null);
        services.AddHttpClient();
    }

এই পূর্বে উত্তর হিসাবে একই stackoverflow.com/a/58187836/125981
মার্ক Schultheiss

1

কিছু লোকের জন্য যিনি ASP.net ওয়েব ওয়েব এপিআই ব্যবহার করছেন (এএসপি.নেট কোরের চেয়ে)।

আপনার WebApiConfig এই লাইন যুক্ত করুন।

//Comment this jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

jsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();

এটি এখানে উত্তর হিসাবে যুক্ত করা কারণ এটি ওয়েব এপিআই-এর জন্য গুগল অনুসন্ধানেও প্রথম আসে।


0

কোর 2.x সংস্করণগুলির জন্য, এই কোডটি ব্যবহার করে আপনি ডিফল্টরূপে উটের মামলার নামগুলি এড়াতে পারবেন। আপনাকে স্টার্টআপ। সি ফাইলের কনফিগার সার্ভিস পদ্ধতিতে নিম্নলিখিত কোড যুক্ত করতে হবে।

services.AddMvc()
.AddJsonOptions(o =>
{
    if (o.SerializerSettings.ContractResolver != null)
    {
        var castedResolver = o.SerializerSettings.ContractResolver
        as DefaultContractResolver;

        castedResolver.NamingStrategy = null;
    }
});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.