
آموزش کار با JSON در سی شارپ با Json.NET
آموزش کار با JSON در سی شارپ با Json.NET یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی کار کردن با داده های JSON در سی شارپ دات نت با استفاده از کتابخانه Json.NET است که با نام اصلی Getting Started with JSON in C# Using Json.NET از شرکت Pluralsight منتشر شده است.
JSON.NET چیست؟
نرم افزار JSON (JavaScript Object Notation) یک قالب تبادل داده سبک وزن است که خواندن و نوشتن آن برای انسان ها آسان است و همچنین تجزیه و تولید آن برای ماشین ها آسان است. JSON یک قالب متنی است که کاملاً مستقل از زبان است و گاهی به عنوان جایگزینی برای XML استفاده می شود. JSON آبجکت ها را در قالب متن ساختاریافته و داده های ذخیره شده در جفت کلید - مقدار نشان می دهد.

به عبارت دیگر Json.NET یک کتابخانه third party است که با استفاده از JsonSerializer به تبدیل متن های JSON و object های دات نت کمک می کند. JsonSerializer آبجکت های دات نت را به متنی معادل JSON تبدیل می کند و دوباره با نگاشت کردن نام های property های آبجکت های .NET به نام های property های JSON برمی گردد. این نرم افزار منبع باز و یا open source می باشد.
ویژگی های JSON
- انعطاف پذیری در Serialize کردن برای تبدیل بین آبجکت های .NET و آبجکت های JSON.
- LINQ to JSON برای خواندن و نوشتن JSON به صورت دستی.
- عملکرد بالا، سریعتر ازserialize کردن های داخلی JSON دات نت.
- خواندن آسان JSON.
- توانایی تبدیل JSON به XML.
- پشتیبانی از .NET 2 و .NET 3.5 و .NET 4 و سیلورلایت و Windows Phone.
Serialization و Deserialization در C# با Json.NET
در برنامههای C#، تبادل داده میان سرویسها و اپلیکیشنها اغلب با استفاده از قالبهایی مانند JSON انجام میشود. Serialization فرایند تبدیل Objectهای برنامه به دادهای قابل انتقال یا ذخیرهسازی است و Deserialization داده دریافتی را به ساختارهای قابل استفاده در برنامه تبدیل میکند. کتابخانه Json.NET این عملیات را برای انواع مختلف داده در دات نت فراهم میکند و امکاناتی برای کنترل نحوه تبدیل Objectها ارائه میدهد. آشنایی با این فرایندها به توسعهدهندگان کمک میکند ارتباط میان مدلهای برنامه و قالبهای تبادل داده را بهتر مدیریت کنند.
هنگام تبدیل دادهها باید به تفاوت میان ساختار Objectهای C# و قالب JSON توجه داشت. نام Propertyها، نوع دادهها، مقادیر Null و ساختار مجموعهها میتوانند بر نتیجه Serialization یا Deserialization تأثیر بگذارند. Json.NET امکاناتی برای تنظیم این رفتارها در اختیار توسعهدهنده قرار میدهد تا خروجی با قرارداد موردنیاز سرویس یا فایل هماهنگ باشد. در این آموزش با مبانی Serialization و تنظیمات Json.NET آشنا میشوید و یاد میگیرید چگونه تبدیل دادهها را متناسب با ساختار برنامه کنترل کنید.
تنظیمات و Attributeهای کتابخانه Json.NET
Json.NET امکان سفارشیسازی رفتار تبدیل دادهها را از طریق تنظیمات و Attributeها فراهم میکند. برای مثال، توسعهدهنده میتواند نحوه نامگذاری Propertyها در JSON، نحوه برخورد با برخی مقادیر و چگونگی پردازش اعضای یک Object را کنترل کند. این قابلیتها بهویژه زمانی مفید هستند که ساختار داخلی مدلهای C# با قالب داده مورد انتظار یک API یا فایل JSON تفاوت داشته باشد. استفاده از تنظیمات مناسب باعث میشود کدهای برنامه بدون تغییر غیرضروری در مدلهای اصلی، دادهها را با قراردادهای خارجی هماهنگ کنند.
انتخاب تنظیمات باید با توجه به نیاز واقعی برنامه انجام شود؛ زیرا تغییر رفتار Serialization میتواند بر سازگاری دادهها و نحوه پردازش آنها در بخشهای دیگر سیستم اثر بگذارد. همچنین Attributeهای قرارگرفته روی مدلها ممکن است رفتار تبدیل همان نوع را مشخص کنند و باید در کنار تنظیمات کلی بررسی شوند. در این دوره، تنظیمات و Attributeهای Json.NET در کنار روشهای Serialization سفارشی مطرح میشوند تا بتوانید کنترل دقیقتری بر ساختار دادههای خروجی و ورودی برنامه داشته باشید.
بررسی LINQ to JSON و تفاوت JSON با XML
LINQ to JSON در Json.NET مجموعهای از امکانات برای کار با ساختار JSON بهصورت برنامهنویسیشده فراهم میکند. با استفاده از این قابلیتها میتوان عناصر موجود در یک سند JSON را بررسی کرد، مقادیر موردنیاز را استخراج کرد یا بخشهایی از ساختار را تغییر داد. این روش زمانی مفید است که لازم باشد با دادههای JSON کار کنید، بدون اینکه همیشه آنها را به یک مدل مشخص در C# تبدیل کنید. آشنایی با این امکانات، انعطاف بیشتری در پردازش دادههای پویا در اختیار توسعهدهنده قرار میدهد.

JSON و XML هر دو برای نمایش و تبادل داده استفاده میشوند، اما ساختار و شیوه نمایش اطلاعات در آنها متفاوت است. JSON معمولاً از Objectها و Arrayها استفاده میکند، در حالی که XML بر پایه Elementها و Attributeها سازماندهی میشود. انتخاب میان این دو قالب به قراردادهای سرویس، نیازهای سیستم و ابزارهای مورد استفاده بستگی دارد. در این آموزش، علاوه بر کار با LINQ to JSON، تفاوتهای JSON و XML و همچنین قالب BSON بررسی میشوند تا با گزینههای مختلف نمایش و پردازش داده آشنا شوید.
مدیریت Performance و اعتبارسنجی ساختار JSON
عملکرد پردازش JSON میتواند در برنامههایی که حجم زیادی از دادهها را دریافت یا تولید میکنند، اهمیت ویژهای داشته باشد. نحوه تبدیل Objectها، میزان تخصیص حافظه و ساختار دادههای مورد پردازش میتوانند بر هزینه اجرایی Serialization و Deserialization اثر بگذارند. به همین دلیل، توسعهدهندگان باید هنگام انتخاب روش پردازش JSON به نیازهای عملکردی برنامه توجه کنند و از انجام عملیات غیرضروری پرهیز کنند. Json.NET امکانات متنوعی برای کار با دادهها دارد و شناخت رفتار آنها به انتخاب روش مناسب کمک میکند.
در کنار Performance، بررسی ساختار دادههای ورودی نیز اهمیت دارد. Json.NET Schema امکان تعریف و بررسی قواعد مربوط به ساختار JSON را فراهم میکند تا بتوان مشخص کرد دادهها با الگوی مورد انتظار سازگار هستند یا خیر. این بررسی میتواند به شناسایی دادههای ناقص یا نامعتبر کمک کند، اما بهتنهایی جایگزین تمام کنترلهای اعتبارسنجی و امنیتی برنامه نیست. در این آموزش با نکات عملکردی، Json.NET Schema و قالب BSON آشنا میشوید و شناخت گستردهتری از امکانات این کتابخانه برای مدیریت دادههای ساختاریافته به دست میآورید.
سرفصل مطالب آموزش ویدئویی کار با JSON در سی شارپ با Json.NET
فصل اول: مقدمه این دوره آموزشی
- مقدمه
فصل دوم: بررسی کردن JSON و Json.NET
- بررسی JSON و Json.NET
- JSON چیست؟
- تاریخچه JSON و Json.NET
- چرا JSON مهم است؟
- آموزش عملی استفاده از JSON در جاوا اسکریپت و API ها
- بررسی استاندارد JSON
- آموزش عملی افزودن Json.NET به پروژه دات نت
- بررسی مثال ها و یک نکته کاربردی
- جمع بندی
فصل سوم: مبانی Serialization
- مبانی Serialization
- Serialize کردن و Desterilize کردن با استفاده از JsonConvert و JsonSerializer
- آموزش عملی: نگاشت کردن JSON به و از دات نت با JsonConvert
- آموزش عملی: حفظ کردن Object Reference ها
- آموزش عملی: استفاده از Dynamic با استفاده از JsonConvert
- آموزش عملی: Serialize کردن Type های مختلف
- آموزش عملی: Desterilize کردن Type های مختلف
- خواندن و نوشتن JSON با استفاده از JsonReader و JsonWriter
- آموزش عملی: استفاده از کلاس JsonSerializer
- آموزش عملی: استفاده از کلاس JsonTextReader
- آموزش عملی: استفاده از کلاس JsonTextWriter
- آموزش عملی: کار با تاریخ ها در JSON
- آموزش عملی: بررسی Error Handling
- جمع بندی
فصل چهارم: تنظیمات و Attribute ها
- تنظیمات و Attribute ها
- آموزش عملی: تنظیم Behavior برایMember های گمشده با MissingMemberHandling
- آموزش عملی: مدیریت Circular Reference ها با ReferenceLoopHandling
- آموزش عملی: مدیریت مقادیر Null با تنظیمات NullValueHandling
- آموزش عملی: کار با مقادیر پیش فرض با DefaultValueHandling
- آموزش عملی: کنترل کردن ساخت Object با ObjectCreationHandling
- آموزش عملی: حفظ کردن اطلاعات Type ها با TypeNameHandling
- آموزش عملی: نام کامل اسمبلی ها با TypeNameAssemblyFormatHandling
- آموزش عملی: ساختن یک Serialization Binder سفارشی
- آموزش عملی: خواندن از پیش با MetadataPropertyHandling
- آموزش عملی: مشخص کردن تایع سازنده با استفاده از ConstructorHandling
- کنترل کردن Serialization با استفاده از Attribute ها
- آموزش عملی: استفاده ازOptIn/Out و Fields
- آموزش عملی: کنترل Serialization با استفاده از JsonProperty
- آموزش عملی: تعیین JsonConverter با استفاده از یک Attribute
- آموزش عملی: بررسی JsonConstructorAttribute
- آموزش عملی: بررسی JsonExtensionDataAttribute
- جمع بندی
فصل پنجم: Serialize کردن سفارشی
- Serialize کردن سفارشی با Json.NET
- Serialize کردن در سناریوهای خاص با استفاده از Conditional Serialization
- آموزش عملی: کنترل Serialize کردن Property ها با ShouldSerialize
- آموزش عملی: کنترل Serialize کردن Property ها با IContractResolver
- ایجاد یک کلاس JsonConverter سفارشی
- آموزش عملی: ایجاد یک JsonConverter سفارشی
- بررسی Serialization Callback ها
- آموزش عملی: بررسی Serialization Callback ها
- Log کردن و اشکال زدایی با ITraceWriter
- آموزش عملی: اشکال زدایی با ردیابی Serialization با استفاده از ITraceWriter
- آموزش عملی: بررسی TraceWriter سفارشی
- جمع بندی
فصل ششم: نکات مربوط به Performance
- نکات مربوط به Performance
- Serialize کردن و Deserialize کردن بصورت دستی
- آموزش عملی: Serialize کردن و Deserialize کردن بصورت دستی
- کار با JSON Fragment ها
- آموزش عملی: کار با JSON Fragment ها
- نوشتن مقادیر خاص با استفاده از JSON Populate
- آموزش عملی: بررسی JSON Populate
- Merg کردن JSON Object ها
- آموزش عملی: Merg کردن JSON Object ها
- استفاده از Attribute های Performance
- آموزش عملی: استفاده از Attribute های Performance
- جمع بندی
فصل هفتم: بررسی LINQ to JSON
- بررسی LINQ to JSON
- ایجاد کردن JSON با استفاده از LINQ
- آموزش عملی: ایجاد کردن JSON با استفاده از LINQ به روش Imperative
- آموزش عملی: ایجاد کردن JSON با استفاده از LINQ به روش Declarative
- آموزش عملی: ایجاد کردن JSON با استفاده از LINQ به روش FromObject
- Parse کردن JSON با استفاده از LINQ
- آموزش عملی: Parse کردن JSON از درون String
- آموزش عملی: Parse کردن JSON از درون Stream
- بررسی Query های JSON با LINQ
- آموزش عملی: بررسی Simple LINQ to JSON
- نسخه نمایشی: خواندن مقادیر از JSON با استفاده از LINQ
- آموزش عملی: بررسی Query های JSON با توابع LINQ
- کار با SelectToken برای ساختن Query های Dynamic
- آموزش عملی: بررسی SelectToken
- کار با Annotation ها
- آموزش عملی: کار با Annotation ها
- جمع بندی
فصل هشتم: بررسی JSON و XML
- بررسی JSON و XML
- تبدیل کردن JSON و XML
- آموزش عملی: تبدیل XML به JSON و بالعکس
- آموزش عملی: استفاده کردن اجباری از JSON Array
- بررسی XML ها و JSON های ناسازگار
- جمع بندی
فصل نهم: کار با باینری JSON (BSON)
- کار با باینری JSON (BSON) آموزش عملی: کار با باینری JSON جمع بندی
فصل دهم: بررسی Json.NET Schema
- کار با Json.NET و JSON Schema
- ایجاد کردن و اعتبارسنجی JSON با استفاده از Json.NET Schema
- جمع بندی
فصل یازدهم: جمع بندی دوره
- آینده Json.NET در .NET Core و .NET 5
- Serialize کردن دات نت از System.Text.Json
- جمع بندی نهایی







