0Pricing
C# Academy · درس

JSON باستخدام System.Text.Json (التفعيل الاختياري والمحوّلات)

تعامَل مع JSON بأسلوب ملائم لـ C# 6: استخدم DataContractJsonSerializer مع [DataContract]/[DataMember] (الأعضاء المفعّلة اختياريًا)، وأجرِ تعديلات بسيطة على التسمية شبيهة بالمحوّلات.

JSON باستخدام System.Text.Json (التفعيل الاختياري والمحوّلات) درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 3 دروس في المجموع.

خطة استخدام JSON في C# 6

الهدف: إجراء تسلسل JSON وإلغاء تسلسله دون حزم خارجية.

  • استخدم DataContractJsonSerializer
  • إدراج الأعضاء صراحةً عبر DataMember
  • تخصيص الأسماء باستخدام Name=
  • القراءة من الملفات والكتابة إليها بأمان

نموذج الإدراج الصريح

في نموذج الإدراج الصريح، ضع علامة DataContract على النوع، وعلى الأعضاء المضمّنة فقط علامة DataMember. استخدم Name= للتحكم في مفاتيح JSON.

using System;
using System.Runtime.Serialization;

[DataContract] // opt-in: only [DataMember] will be serialized
public sealed class User
{
  [DataMember(Name = "id")]
  public int Id { get; set; }

  [DataMember(Name = "name")]
  public string Name { get; set; }

  // Not included: no DataMember
  public string InternalNote { get; set; }
}

public class Program
{
  public static void Main(string[] args)
  {
    User u = new User { Id = 7, Name = "Ada", InternalNote = "hidden" };
    Console.WriteLine("Ready to serialize: " + u.Name);
  }
}

التسلسل إلى JSON

أنشئ DataContractJsonSerializer، واكتب إلى دفق، ثم شفّر النص باستخدام UTF-8.

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;

[DataContract]
public sealed class User
{
  [DataMember(Name = "id")]
  public int Id { get; set; }

  [DataMember(Name = "name")]
  public string Name { get; set; }

  public string InternalNote { get; set; }
}

public class Program
{
  public static string ToJson(User u)
  {
    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(User));
    using (MemoryStream ms = new MemoryStream())
    {
      ser.WriteObject(ms, u);
      return Encoding.UTF8.GetString(ms.ToArray());
    }
  }

  public static void Main(string[] args)
  {
    User u = new User { Id = 1, Name = "Ada", InternalNote = "not saved" };
    string json = ToJson(u);
    Console.WriteLine(json); // {"id":1,"name":"Ada"}
  }
}

إلغاء التسلسل من JSON

ألغِ التسلسل بقراءة البيانات من دفق. ولا تُملأ إلا الحقول التي تحمل DataMember.

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;

[DataContract]
public sealed class User
{
  [DataMember(Name = "id")]
  public int Id { get; set; }

  [DataMember(Name = "name")]
  public string Name { get; set; }
}

public class Program
{
  public static User FromJson(string json)
  {
    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(User));
    byte[] bytes = Encoding.UTF8.GetBytes(json);
    using (MemoryStream ms = new MemoryStream(bytes))
    {
      return (User)ser.ReadObject(ms);
    }
  }

  public static void Main(string[] args)
  {
    string json = "{\"id\":42,\"name\":\"Bob\"}";
    User u = FromJson(json);
    Console.WriteLine(u.Id + " - " + u.Name);
  }
}

حفظ ملفات JSON وتحميلها

احفظ JSON باستخدام FileStream داخل كتل using. وهذا يحاكي التطبيقات الحقيقية: الإعدادات والبيانات الصغيرة وغير ذلك.

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;

[DataContract]
public sealed class Settings
{
  [DataMember(Name = "theme")]
  public string Theme { get; set; }

  [DataMember(Name = "notifications")]
  public bool Notifications { get; set; }
}

public class Program
{
  public static void Save(string path, Settings s)
  {
    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Settings));
    using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
    {
      ser.WriteObject(fs, s);
    }
  }

  public static Settings Load(string path)
  {
    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Settings));
    using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
    {
      return (Settings)ser.ReadObject(fs);
    }
  }

  public static void Main(string[] args)
  {
    string path = "settings.json";
    Save(path, new Settings { Theme = "dark", Notifications = true });
    Settings loaded = Load(path);
    Console.WriteLine(loaded.Theme + " / " + loaded.Notifications);
  }
}

التسمية والتحويلات البسيطة

التخصيص:

  • استخدم Name= في DataMember لتعيين أسماء الخصائص (مثل user_name)
  • بالنسبة إلى التعدادات، ضع علامة EnumMember على كل قيمة
  • بالنسبة إلى التنسيقات الخاصة (التواريخ والأرقام)، حوّل القيمة إلى خاصية نصية (تعيين يدوي) في C# 6

قاعدة الإدراج الصريح في JSON

تحقق سريع: باستخدام DataContractJsonSerializer، كيف تُدرج خصائص معينة فقط في JSON؟

مراجعة

مراجعة: استخدم DataContractJsonSerializer في C# 6، وأدرج الأعضاء صراحةً باستخدام DataMember، واضبط الأسماء عبر Name=، واقرأ واكتب باستخدام أنماط التدفقات الآمنة.

الأسئلة الشائعة

هل درس «JSON باستخدام System.Text.Json (التفعيل الاختياري والمحوّلات)» مجاني؟

نعم — نص درس «JSON باستخدام System.Text.Json (التفعيل الاختياري والمحوّلات)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.

ماذا ستتعلم في «JSON باستخدام System.Text.Json (التفعيل الاختياري والمحوّلات)»؟

تعامَل مع JSON بأسلوب ملائم لـ C# 6: استخدم DataContractJsonSerializer مع [DataContract]/[DataMember] (الأعضاء المفعّلة اختياريًا)، وأجرِ تعديلات بسيطة على التسمية شبيهة بالمحوّلات. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟

لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.

كم من الوقت يستغرق درس «JSON باستخدام System.Text.Json (التفعيل الاختياري والمحوّلات)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟

نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. System.IO (المسارات والتدفقات)
  2. JSON باستخدام System.Text.Json (التفعيل الاختياري والمحوّلات)
  3. أنماط بسيطة لتحليل CSV
← العودة إلى C# Academy