"> JSON Serializer در NET Core 3. | آموزش .NET Core | ام اس پی سافت

JSON Serializer در NET Core 3.

Serializer

انتشار NET Core 3. شامل یک serializer  کاملا جدید برای JavaScript Object Notation تحت فضای نام System.Text.Jsonمی باشد.

تا پایان مقاله همراه ما باشید.

مستندات Microsoft اینگونه اظهار می دارد:

Microsoft

فضای نام System.Text.Json قابلیت های کارآیی بالا، تخصیص کم حافظه، و مطابق با استانداردها را جهت پردازش JavaScript Object Notation ارائه می دهد، که شامل سریالی کردن اشیاء به متن JSON و از حالت سریالی خارج کردن متن JSON به اشیاء، با پشتیبانی داخلی از UTF-8 می باشد.

این فضای نام همچنین انواعی را جهت خواندن و نوشتن متن JSON با کدگذاری UTF-8، و ایجاد یک مدل شی گرای سند (DOM/document object model) درون حافظه ای جهت دسترسی تصادفی عناصر JSON درون یک نمای ساختاری از داده ها را فراهم آورده است.

سریالی کردن در همه جا مورد استفاده قرار می گیرد، در برنامه نویسی اپلیکیشن های مدرن برای داده های ارسال شده از طریق API های مبتنی بر وب، در مدل های نمایی ASP.NET و حتی برای پایگاه داده هایی مانند Cosmos DB ، از آنجایی که حافظه ی داخلی آن JSON می باشد.

حتی اشیاء پیکربندی را از دیسک برای اپلیکیشن هایی که می نویسیم نیز جهت ذخیره ی داده های اپلیکیشن و کاربر سریالی می کنیم.

خواهیم گفت که JSON، به دلیل اطناب و درازگویی کمتر آن نسبت به XML و در نتیجه قابلیت اجرایی بالاتر، مشهورترین روش جهت سریالی کردن می باشد.

پیش از .NET Core و حتی پیش از NuGet ، مورد استفاده ترین کتابخانه جهت سریالی کردن JSON، Newtonsoft.Json با بیش از ۲۶۶ میلیون دانلود تا کنون می باشد!

Serializer

این کتابخانه آنقدر مشهور است که حتی Microsoft نیز از آن استفاده می کند، گرچه .NET و .NET Core (حتی پیش از نسخه ی ۳) می توانند JSON را سریالی کنند (از طریق DataContractJsonSerializer).

این کتابخانه ی رایگان دارای ویژگی های بسیاری بوده و استفاده از آن آسان است.

سریالی کردن یک شیء به JSON

برای مثال هایی که نشان خواهیم داد، مجموعه ای از یک شیء واقعی به نام Person را از پکیج NuGet خود، که برای سنجش و امتحان کردن کد استفاده می کنم، سریالی خواهم کرد.

سریالی کردن اشیاء به JSON با استفاده از کتابخانه ی Newtonsoft به سادگی یک خط کد است:

var json = JsonConvert.SerializeObject(people);  

بکارگیری سریالی کننده ی جدید JSON در .NET Core 3 نیز یک خط کد می باشد:

var json = JsonSerializer.Serialize(people);  

بیایید نگاهی به تست های سنجش من که در مجموعه هایی با اندازه ی متفاوت انجام شده اند بیندازیم.

JSON

تست ها نشان می دهند که استفاده از JsonConvert کمی سریع تر از استفاده از JsonSerializer جدید است.

این دو در انتخاب یک برنده در کارآیی بسیار بهم نزدیک هستند.

از حالت سریالی خارج کردن JSON به یک شیء

باز هم از حالت سریالی خارج کردن JSON و بازگردانی به یک شیء به سادگی یک خط کد است.

استفاده از کتابخانه ی Newtonsoft به این شکل است:

var people = JsonConvert.DeserializeObject<List<Person>>(json);  

استفاده از JsonSerializer جدید به این صورت می¬باشد:

var people = JsonSerializer.Deserialize(json, typeof(List<Person>)) as List<Person>;  

امیدوار بودم JsonSerializer از همان نحو ساده تری که JsonConvert استفاده می کند، بهره می بُرد.

بیایید نگاهی به نتایج عملکرد بیندازیم.

 JsonConvert

همانطور که می توانید مشاهده کنید، استفاده از JsonSerializer جدید برنده ی مشخص عملکرد هنگام خارج کردن JSON از حالت سریالی است!
خلاصه
نتایج سنجش نشان می دهند که استفاده از JsonSerializer در .NET Core 3 بطور کلی دارای قابلیت اجرایی بالاتری می باشد.

امیدوارم این مقاله شما را تشویق به بررسی آن کند.

تنها نقطه ضعف آن این است که JsonSerializer بخشی از .NET Standard 2.1 نمی باشد.

این بدین معناست که اگر کتابخانه ای داشته باشید که در .NET Standard 2.1 نوشته شده باشد (مانند من)، نیاز خواهد بود که از کتابخانه-ی DataContractJsonSerializer یا Newtonsoft استفاده کنید.

پیشنهاد می کنم انواع خود را جهت اطمینان از دریافت بهترین عملکرد برای اپلیکیشن خود مورد سنجش قرار دهید.

  • پسورد: www.mspsoft.com
زهره سلطانیان

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

کدیشن ! مارکت پروژه های برنامه نویسی راه اندازی شدیه توکه پا بریم ببینم