معالجة JSON في C# (.NET): دليل كامل مع أمثلة

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

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

ابدأ الدورة

معالجة JSON في C# (.NET): دليل كامل مع أمثلة



JSON (JavaScript Object Notation) هو أحد أكثر تنسيقات تبادل البيانات شيوعًا في تطبيقات الويب الحديثة وواجهات برمجة التطبيقات (API) وملفات التكوين. في نظام .NET البيئي، تتوفر للمطورين أدوات قوية للعمل مع JSON، تتيح لهم تسلسل الكائنات إلى JSON والعكس بسهولة. في هذه المقالة، سنستعرض بالتفصيل نهجين رئيسيين: المكتبة المدمجة System.Text.Json (موصى بها لـ .NET Core 3.0+ و .NET 5+) والمكتبة الخارجية الشهيرة Newtonsoft.Json (المعروفة أيضًا باسم Json.NET).



1. System.Text.Json — المعيار الحديث لـ .NET



بدءًا من .NET Core 3.0، قدمت Microsoft مكتبتها عالية الأداء للعمل مع JSON — System.Text.Json. وهي محسّنة لاستهلاك ذاكرة منخفض وسرعة عالية، مما يجعلها الخيار الأمثل للمشاريع الجديدة.



1.1. التثبيت والاستيراد



المكتبة مدمجة بالفعل في .NET 5/6/7/8/9، لذا لا يلزم تثبيت إضافي. لاستخدامها، يكفي تضمين مساحة الأسماء:



using System.Text.Json;using System.Text.Json.Serialization;


1.2. التسلسل الأساسي وإلغاء التسلسل



لننظر إلى مثال بسيط: تسلسل كائن إلى JSON والعكس.



// تعريف الفئةpublic class Person{    public string Name { get; set; }    public int Age { get; set; }    public bool IsEmployed { get; set; }}

// التسلسلvar person = new Person { Name = "إيفان", Age = 30, IsEmployed = true };string json = JsonSerializer.Serialize(person);Console.WriteLine(json); // {"Name":"إيفان","Age":30,"IsEmployed":true}

// إلغاء التسلسلvar deserializedPerson = JsonSerializer.Deserialize<Person>(json);Console.WriteLine(deserializedPerson.Name); // إيفان


1.3. العمل مع السمات (Attributes)



يدعم System.Text.Json السمات للتحكم الدقيق في التسلسل:



public class Product{    [JsonPropertyName("product_id")]    public int Id { get; set; }        [JsonIgnore]    public string InternalCode { get; set; }        [JsonConverter(typeof(JsonStringEnumConverter))]    public ProductCategory Category { get; set; }}

public enum ProductCategory{ Electronics, Clothing, Food}

var product = new Product { Id = 101, InternalCode = "سري", Category = ProductCategory.Electronics };

string json = JsonSerializer.Serialize(product);// {"product_id":101,"Category":"Electronics"}// InternalCode لم يظهر في JSON بفضل [JsonIgnore]


1.4. خيارات التسلسل



يمكنك تخصيص سلوك المسلسل عبر JsonSerializerOptions:



var options = new JsonSerializerOptions{    WriteIndented = true,           // إخراج جميل مع مسافات بادئة    PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // camelCase للخصائص    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull // تجاهل القيم الفارغة};

string prettyJson = JsonSerializer.Serialize(person, options);Console.WriteLine(prettyJson);/* الإخراج:{ "name": "إيفان", "age": 30, "isEmployed": true}*/


2. Newtonsoft.Json (Json.NET) — أداة مجربة عبر الزمن



قبل ظهور System.Text.Json، كانت Newtonsoft.Json هي المعيار الفعلي للعمل مع JSON في .NET. تقدم إعدادات أكثر مرونة ومجموعة واسعة من الوظائف، على الرغم من أنها أقل أداءً.



2.1. التثبيت



لاستخدام Newtonsoft.Json، يجب تثبيت حزمة NuGet:



// عبر Package Manager Console:Install-Package Newtonsoft.Json

// أو عبر .NET CLI:dotnet add package Newtonsoft.Json


2.2. العمل الأساسي



using Newtonsoft.Json;

public class Or

توصيات