العمل مع JSON في C#: التحليل والتسلسل للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في العمل مع JSON في C#



JSON (JavaScript Object Notation) هو تنسيق خفيف لتبادل البيانات يُستخدم على نطاق واسع في تطوير الويب وملفات التكوين وواجهات برمجة التطبيقات (API). إذا كنت تبدأ في تعلم C# و.NET، فإن إتقان العمل مع JSON هو مهارة أساسية. في هذه المقالة، سنشرح كيفية تنفيذ تحليل JSON (تحويل سلسلة نصية إلى كائن) والتسلسل (تحويل كائن إلى سلسلة JSON) باستخدام الأدوات المضمنة في .NET والمكتبة الشهيرة Newtonsoft.Json.



سنستعرض أمثلة عملية ستساعدك على إتقان المفاهيم الأساسية بسرعة. جميع الأكواد مكتوبة بلغة C# (.NET 6+) ولكنها ستعمل أيضًا في الإصدارات الأقدم مع تعديلات طفيفة.



1. العمل المضمن مع JSON: مساحة الاسم System.Text.Json



بدءًا من .NET Core 3.0، قدمت Microsoft مساحة الاسم عالية الأداء System.Text.Json. وهي مضمنة في المنصة ولا تتطلب تثبيت حزم إضافية. هذه هي الأداة الرئيسية للعمل مع JSON في تطبيقات .NET الحديثة.



1.1 تسلسل كائن إلى JSON



التسلسل هو عملية تحويل كائن C# إلى سلسلة JSON. لنلقِ نظرة على الفئة البسيطة Person:



public class Person{    public string Name { get; set; }    public int Age { get; set; }    public string Email { get; set; }}

// الاستخدامvar person = new Person{ Name = "إيفان إيفانوف", Age = 30, Email = "ivan@example.com"};

string json = System.Text.Json.JsonSerializer.Serialize(person);Console.WriteLine(json);


النتيجة:



{"Name":"إيفان إيفانوف","Age":30,"Email":"ivan@example.com"}


بشكل افتراضي، يتم تسلسل الخصائص بأسماء مطابقة لأسماء الخصائص في C#. يمكنك تخصيص التنسيق باستخدام JsonSerializerOptions، على سبيل المثال، لجعل JSON أكثر قابلية للقراءة:



var options = new System.Text.Json.JsonSerializerOptions{    WriteIndented = true};

string prettyJson = JsonSerializer.Serialize(person, options);Console.WriteLine(prettyJson);


الآن سيكون الإخراج مع مسافات بادئة:



{  "Name": "إيفان إيفانوف",  "Age": 30,  "Email": "ivan@example.com"}


1.2 إلغاء التسلسل (تحليل) JSON إلى كائن



العملية العكسية - تحويل سلسلة JSON إلى كائن C# - تسمى إلغاء التسلسل. استخدم الطريقة JsonSerializer.Deserialize<T>():



string jsonString = @"{""Name"":""ماريا بيتروفا"",""Age"":25,""Email"":""maria@example.com""}";

Person? person = System.Text.Json.JsonSerializer.Deserialize<Person>(jsonString);

if (person != null){ Console.WriteLine($"الاسم: {person.Name}, العمر: {person.Age}");}


هام: إذا كان JSON لا يتوافق مع بنية الفئة، فسيتم طرح استثناء JsonException. للعمل الآمن، استخدم معالجة الاستثناءات أو تحقق من null.



1.3 العمل مع JsonDocument لـ JSON عشوائي



أحيانًا تكون بنية JSON غير معروفة مسبقًا أو ترغب في قراءة البيانات دون إنشاء فئات. لهذا، استخدم JsonDocument:



string jsonText = @"{""product"":""لابتوب"",""price"":75000,""inStock"":true}";

using JsonDocument doc = JsonDocument.Parse(jsonText);JsonElement root = doc.RootElement;

string product = root.GetProperty("product").GetString();int price = root.GetProperty("price").GetInt32();bool inStock = root.GetProperty("inStock").GetBoolean();

Console.WriteLine($"{product}: {price} ر.س. (متوفر: {inStock})");


JsonDocument يطبق IDisposable، لذا تأكد من استخدام using لتحرير الموارد.



2. المكتبة الكلاسيكية Newtonsoft.Json (Json.NET)



قبل ظهور System.Text.

المدونات

توصيات الكتب