من JSON إلى C#: دليل المطور الشامل لتحويل البيانات بسلاسة في عالم التطبيقات الحديثة، أصبح تبادل البيانات بين الأنظمة المختلفة أمرًا أساسيً...
من JSON إلى C#: دليل المطور الشامل لتحويل البيانات بسلاسة
في عالم التطبيقات الحديثة، أصبح تبادل البيانات بين الأنظمة المختلفة أمرًا أساسيًا. وتقف صيغة JSON (JavaScript Object Notation) في قلب هذا التبادل بسبب بساطتها، خفتها، وسهولة قراءتها بواسطة البشر والآلات. لكن في عالم C#، نتعامل مع البيانات ككائنات (Objects) ذات خصائص وطرق محددة. هنا تبرز الحاجة إلى "جسر" يربط بين هذين العالمين: تحويل بيانات JSON غير المنظمة إلى كائنات C# مُنظمة وقابلة للبرمجة.
هذا المقال سيأخذك في رحلة لفهم الطرق المختلفة لتحويل JSON إلى كائنات C#، مع التركيز على الأدوات الحديثة والفعالة.
الفهم الأساسي: لماذا نحتاج للتحويل؟
تخيل أنك تستدعي واجهة برمجة تطبيقات (API) لخدمة الطقس وتستقبل البيانات التالية على شكل JSON:
{ "temperature": 25, "city": "الرياض", "isSunny": true, "forecast": ["Sunday", "Monday", "Tuesday"] }
في C#، لا يمكنك التعامل مع temperature أو city مباشرة. أنت بحاجة إلى كائن (Class) يمثل هذه البنية. عملية التحويل تقوم بملء خصائص هذا الكائن تلقائيًا بناءً على بيانات الـ JSON.
// الكائن في C# الذي يمثل بنية JSON public class WeatherData { public int Temperature { get; set; } public string City { get; set; } public bool IsSunny { get; set; } public List<string> Forecast { get; set; } }
البطل الحديث: System.Text.Json
مع إصدار .NET Core 3.0 وما بعده، قدمت Microsoft مكتبة System.Text.Json كبديل عالي الأداء لمكتبة Newtonsoft.Json (المعروفة سابقًا باسم Json.NET). أصبحت الآن الخيار الأمثل والموصى به لمعظم السيناريوهات.
التحويل (التسلسل - Deserialization) من JSON إلى كائن C#:
التحويل من سلسلة نصية (JSON) إلى كائن يسمى Deserialization.
using System.Text.Json; // بيانات JSON الواردة من API string jsonString = """ { "temperature": 25, "city": "الرياض", "isSunny": true, "forecast": ["Sunday", "Monday", "Tuesday"] } """; // التحويل من JSON إلى كائن WeatherData WeatherData weather = JsonSerializer.Deserialize<WeatherData>(jsonString); // الآن يمكنك استخدام الكائن في برنامجك Console.WriteLine($"الطقس في {weather.City}: {weather.Temperature} درجة"); if (weather.IsSunny) { Console.WriteLine("الجو مشمس اليوم"); }
التحويل العكسي (التسلسل - Serialization) من كائن C# إلى JSON:
التحويل من كائن إلى سلسلة نصية (JSON) يسمى Serialization.
// إنشاء كائن جديد var newWeather = new WeatherData { Temperature = 30, City = "جدة", IsSunny = false, Forecast = new List<string> { "Wednesday", "Thursday" } }; // التحويل من الكائن إلى سلسلة JSON string newJsonString = JsonSerializer.Serialize(newWeather, new JsonSerializerOptions { WriteIndented = true }); // طباعة JSON المُنسق Console.WriteLine(newJsonString); // الناتج: // { // "Temperature": 30, // "City": "جدة", // "IsSunny": false, // "Forecast": ["Wednesday", "Thursday"] // }
التعامل مع الاختلافات في تسمية الخصائص
غالبًا ما تختلف تسمية الخصائص في JSON (كamelCase) عن تسميتها في C# (PascalCase). لحل هذه المشكلة، نستخدم السمة [JsonPropertyName].
// الـ JSON يستخدم camelCase { "currentTemp": 25, "cityName": "الرياض" }
public class WeatherData { [JsonPropertyName("currentTemp")] public int Temperature { get; set; } [JsonPropertyName("cityName")] public string City { get; set; } }
الطريقة التقليدية: Newtonsoft.Json (Json.NET)
قبل ظهور System.Text.Json، كانت مكتبة Newtonsoft.Json هي الخيار الوحيد والشائع. وهي لا تزال قوية وتحتوي على features إضافية، لكن System.Text.Json أسرع ومضمن في .NET.
للاستخدامها، يجب تثبيت الحزمة أولاً عبر NuGet:
Install-Package Newtonsoft.Json
using Newtonsoft.Json; string jsonString = ...; // بيانات JSON // التحويل باستخدام Newtonsoft.Json WeatherData weather = JsonConvert.DeserializeObject<WeatherData>(jsonString); // التحويل العكسي string jsonOutput = JsonConvert.SerializeObject(weather, Formatting.Indented);
أدوات مساعدة رائعة: توليد الكود تلقائيًا
لا تكتب classes الـ C# يدويًا! هناك أدوات رائعة تقوم بتحليل JSON وتوليد الكود المناسب لك تلقائيًا.
في Visual Studio:
انسخ نص الـ JSON.
اذهب إلى
Edit->Paste Special->Paste JSON as Classes.سيقوم Visual Studio تلقائيًا بإنشاء Class يتطابق مع بنية JSON.
مواقع إلكترونية:
مواقع مثل json2csharp.com تقوم بنفس المهمة. فقط الصق الـ JSON وسيحول لك إلى كود C#.في Visual Studio Code:
هناك إضافات مثل "Paste JSON as Code" توفر نفس الوظيفة.
أفضل الممارسات ونصائح مهمة
تحقق من صحة البيانات (Validation): تأكد من أن بيانات JSON صحيحة قبل التحويل. استخدم معاملات مثل
JsonSerializerOptionsللتحكم في السلوك (مثل تجاهل الخاصية إذا كانت قيمتهاnull).تعامل مع الاستثناءات (Exceptions): احط عملية
Deserializeبكتلةtry-catchللتعامل مع أي أخطاء في صيغة JSON أو عدم تطابق في البيانات.csharptry { var weather = JsonSerializer.Deserialize<WeatherData>(jsonString); } catch (JsonException ex) { Console.WriteLine($"خطأ في تحويل JSON: {ex.Message}"); }
اختر المكتبة المناسبة: استخدم
System.Text.Jsonللمشاريع الجديدة ما لم تكن بحاجة إلى ميزات متقدمة موجودة فقط فيNewtonsoft.Json.استخدم الأدوات المساعدة: وفر وقتك وجهدك باستخدام أدوات توليد الكود التلقائي.
خاتمة
تحويل JSON إلى كائنات C# هو عملية أساسية في تطوير التطبيقات الحديثة. بفضل المكتبات القوية مثل System.Text.Json، أصبحت هذه المهمة بسيطة وفعالة. بفهمك لهذه الآلية واستخدامك للأدوات المناسبة، يمكنك بناء تطبيقات تتفاعل بسلاسة مع واجهات البرمجة (APIs) وخدمات الويب، مع الحفاظ على كود C# نظيف، منظم، وسهل الصيانة. ابدأ بتجربة هذه الأمثلة البسيطة، وستجد نفسك قادرًا على التعامل مع أي بنية بيانات معقدة قادمة من العالم الخارجي.

التعليقات