من JSON إلى C#: دليل المطور الشامل لتحويل البيانات بسلاسة

  من JSON إلى C#: دليل المطور الشامل لتحويل البيانات بسلاسة في عالم التطبيقات الحديثة، أصبح تبادل البيانات بين الأنظمة المختلفة أمرًا أساسيً...

 


من JSON إلى C#: دليل المطور الشامل لتحويل البيانات بسلاسة

في عالم التطبيقات الحديثة، أصبح تبادل البيانات بين الأنظمة المختلفة أمرًا أساسيًا. وتقف صيغة JSON (JavaScript Object Notation) في قلب هذا التبادل بسبب بساطتها، خفتها، وسهولة قراءتها بواسطة البشر والآلات. لكن في عالم C#، نتعامل مع البيانات ككائنات (Objects) ذات خصائص وطرق محددة. هنا تبرز الحاجة إلى "جسر" يربط بين هذين العالمين: تحويل بيانات JSON غير المنظمة إلى كائنات C# مُنظمة وقابلة للبرمجة.

هذا المقال سيأخذك في رحلة لفهم الطرق المختلفة لتحويل JSON إلى كائنات C#، مع التركيز على الأدوات الحديثة والفعالة.

الفهم الأساسي: لماذا نحتاج للتحويل؟

تخيل أنك تستدعي واجهة برمجة تطبيقات (API) لخدمة الطقس وتستقبل البيانات التالية على شكل JSON:

json
{
  "temperature": 25,
  "city": "الرياض",
  "isSunny": true,
  "forecast": ["Sunday", "Monday", "Tuesday"]
}

في C#، لا يمكنك التعامل مع temperature أو city مباشرة. أنت بحاجة إلى كائن (Class) يمثل هذه البنية. عملية التحويل تقوم بملء خصائص هذا الكائن تلقائيًا بناءً على بيانات الـ JSON.

csharp
// الكائن في 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.

csharp
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.

csharp
// إنشاء كائن جديد
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
// الـ JSON يستخدم camelCase
{
    "currentTemp": 25,
    "cityName": "الرياض"
}
csharp
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:

text
Install-Package Newtonsoft.Json
csharp
using Newtonsoft.Json;

string jsonString = ...; // بيانات JSON

// التحويل باستخدام Newtonsoft.Json
WeatherData weather = JsonConvert.DeserializeObject<WeatherData>(jsonString);

// التحويل العكسي
string jsonOutput = JsonConvert.SerializeObject(weather, Formatting.Indented);

أدوات مساعدة رائعة: توليد الكود تلقائيًا

لا تكتب classes الـ C# يدويًا! هناك أدوات رائعة تقوم بتحليل JSON وتوليد الكود المناسب لك تلقائيًا.

  1. في Visual Studio:

    • انسخ نص الـ JSON.

    • اذهب إلى Edit -> Paste Special -> Paste JSON as Classes.

    • سيقوم Visual Studio تلقائيًا بإنشاء Class يتطابق مع بنية JSON.

  2. مواقع إلكترونية:
    مواقع مثل json2csharp.com تقوم بنفس المهمة. فقط الصق الـ JSON وسيحول لك إلى كود C#.

  3. في Visual Studio Code:
    هناك إضافات مثل "Paste JSON as Code" توفر نفس الوظيفة.

أفضل الممارسات ونصائح مهمة

  1. تحقق من صحة البيانات (Validation): تأكد من أن بيانات JSON صحيحة قبل التحويل. استخدم معاملات مثل JsonSerializerOptions للتحكم في السلوك (مثل تجاهل الخاصية إذا كانت قيمتها null).

  2. تعامل مع الاستثناءات (Exceptions): احط عملية Deserialize بكتلة try-catch للتعامل مع أي أخطاء في صيغة JSON أو عدم تطابق في البيانات.

    csharp
    try
    {
        var weather = JsonSerializer.Deserialize<WeatherData>(jsonString);
    }
    catch (JsonException ex)
    {
        Console.WriteLine($"خطأ في تحويل JSON: {ex.Message}");
    }
  3. اختر المكتبة المناسبة: استخدم System.Text.Json للمشاريع الجديدة ما لم تكن بحاجة إلى ميزات متقدمة موجودة فقط في Newtonsoft.Json.

  4. استخدم الأدوات المساعدة: وفر وقتك وجهدك باستخدام أدوات توليد الكود التلقائي.

خاتمة

تحويل JSON إلى كائنات C# هو عملية أساسية في تطوير التطبيقات الحديثة. بفضل المكتبات القوية مثل System.Text.Json، أصبحت هذه المهمة بسيطة وفعالة. بفهمك لهذه الآلية واستخدامك للأدوات المناسبة، يمكنك بناء تطبيقات تتفاعل بسلاسة مع واجهات البرمجة (APIs) وخدمات الويب، مع الحفاظ على كود C# نظيف، منظم، وسهل الصيانة. ابدأ بتجربة هذه الأمثلة البسيطة، وستجد نفسك قادرًا على التعامل مع أي بنية بيانات معقدة قادمة من العالم الخارجي.


التعليقات

الاسم

-,2,الخوارزميات,1,الواجهات في السي شارب,4,برمجة,2,بنية,2,تحويل,1,تطبيقات,1,جافا,1,كود,1,لغة السي شارب,4,مستندات,1,مقدمة,3,C#,5,c# download,2,Class,1,clean architecture c#,1,CSS3,1,Cube,1,documentation,1,HTML5,2,Introduction,3,JAVA,3,Java JRE,1,JRE,1,json,1,one compiler,1,one compiler java,1,PDF,1,PHP 5,1,Program Structure,2,programming,1,Square,1,Visual Studio Code,1,VS Code,1,Word,1,
rtl
item
المبرمج العربي: من JSON إلى C#: دليل المطور الشامل لتحويل البيانات بسلاسة
من JSON إلى C#: دليل المطور الشامل لتحويل البيانات بسلاسة
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUrClOu8j2_RP_bJFr8nuY_EFPuNQLBOWc2TNmkHxWb0SwDhNhHRIP2KIGcYv1pmgCLrDW0JF5kaeZdDT7M6ejMR04Dpv4BJU05FKtGbuXjDnfMtWHJ3OsIxFpWTEfYcEieGL9G-KUpBDoRd5x__shIqHvd-tcitsbsSPSGRTfs21tUJczcI_oCY0hQsc/s320/json%20to%20c%23.jpg
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUrClOu8j2_RP_bJFr8nuY_EFPuNQLBOWc2TNmkHxWb0SwDhNhHRIP2KIGcYv1pmgCLrDW0JF5kaeZdDT7M6ejMR04Dpv4BJU05FKtGbuXjDnfMtWHJ3OsIxFpWTEfYcEieGL9G-KUpBDoRd5x__shIqHvd-tcitsbsSPSGRTfs21tUJczcI_oCY0hQsc/s72-c/json%20to%20c%23.jpg
المبرمج العربي
https://programingarabi.blogspot.com/2025/10/json-c.html
https://programingarabi.blogspot.com/
http://programingarabi.blogspot.com/
http://programingarabi.blogspot.com/2025/10/json-c.html
true
408017146795577721
UTF-8
تحميل جميع المقالات لم يتم العثور على أي مقالات عرض الكل اقرأ المزيد رد الغاء الرد مسح بواسطة الرئيسية الصفحات مقالات عرض الكل موصى به لك LABEL ارشيف بحث كل المقالات لم يتم العثور على أي مقالة مطابقة مع طلبك الرجوع للرئيسية الاحد الاثنين الثلاثاء الاربعاء الخميس الجمعة السبت Sun Mon Tue Wed Thu Fri Sat كانون الثاني شباط آذار نيسان أيار حزيران تموز آب أيلول تشرين الأول تشرين الثاني كانون الأول Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec الأن 1 منذ دقيقة $$1$$ منذ دقائق 1 منذ ساعة $$1$$ منذ ساعات البارحة $$1$$ منذ أيام $$1$$ منذ أسابيع منذ أكثر من 5 أسابيع متابعون تتبع هذا المحتوى المميز مقفل الخطوة 1: شارك على شبكة اجتماعية الخطوة 2: انقر فوق الارتباط الموجود على شبكة التواصل الاجتماعي الخاصة بك انسخ كل الأكواد حدد كل الأكواد تم نسخ جميع الأكواد إلى الحافظة الخاصة بك لا يمكن نسخ الأكواد / نصوص, يرجى الضغط [CTRL]+[C] (or CMD+C with Mac) للنسخ