JSON (JavaScript Object Notation) هو تنسيق خفيف الوزن لتبادل البيانات، ويُستخدم على نطاق واسع في تطبيقات الويب وواجهات برمجة التطبيقات. توفر C# عدة طرق لتحويل الكائنات إلى سلاسل JSON بكفاءة، مما يُبسط التواصل مع الأنظمة الأخرى ويُمكّن تخزين البيانات بطريقة قابلة للقراءة من قبل الإنسان. تستعرض هذه المقالة ثلاث طرق شائعة لهذا التحويل، مع مقارنة نقاط القوة والضعف لكل منها.
محتويات
- تحويل الكائنات إلى JSON باستخدام
JavaScriptSerializer
- التسلسل JSON الفعال مع
JsonConvert.SerializeObject
- تحكم دقيق مع
JObject.FromObject
تحويل الكائنات إلى JSON باستخدام JavaScriptSerializer
توفر فئة System.Web.Script.Serialization.JavaScriptSerializer
نهجًا مباشرًا لتحويل JSON. ومع ذلك، فهي مكون قديم ويفتقر إلى ميزات وأداء المكتبات الأحدث. يوصى عمومًا باستخدام بدائل أحدث للمشاريع الجديدة.
using System;
using System.Web.Script.Serialization;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(person);
Console.WriteLine(jsonString); // Output: {"Name":"John Doe","Age":30}
}
}
ملاحظة: يتطلب مرجعًا إلى System.Web.Extensions
(يُعثر عليه عادةً ضمن تجميعات .NET Framework). لا يُوصى به لنظام .NET Core والإصدارات الأحدث.
التسلسل JSON الفعال مع JsonConvert.SerializeObject
Newtonsoft.Json (يُشار إليه غالبًا باسم Json.NET) هي مكتبة JSON عالية الأداء تُستخدم على نطاق واسع لـ C#. توفر حلاً قويًا وغنيًا بالمميزات لتحويل JSON وتفكيكه. قم بتثبيت حزمة NuGet Newtonsoft.Json
لاستخدام هذه الطريقة.
using Newtonsoft.Json;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
string jsonString = JsonConvert.SerializeObject(person);
Console.WriteLine(jsonString); // Output: {"Name":"John Doe","Age":30}
}
}
JsonConvert.SerializeObject
موجزة وفعالة. توفر Newtonsoft.Json خيارات تخصيص واسعة النطاق للتعامل مع القيم الخالية، والتنسيق، والمزيد.
تحكم دقيق مع JObject.FromObject
كجزء من مكتبة Newtonsoft.Json أيضًا، توفر فئة JObject
تحكمًا دقيقًا في بنية JSON قبل التحويل. هذا مفيد بشكل خاص عند معالجة تمثيل JSON قبل تحويله إلى سلسلة.
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Example
{
public static void Main(string[] args)
{
Person person = new Person { Name = "John Doe", Age = 30 };
JObject jsonObject = JObject.FromObject(person);
string jsonString = jsonObject.ToString();
Console.WriteLine(jsonString); // Output: {"Name":"John Doe","Age":30}
}
}
على الرغم من تشابهها مع JsonConvert.SerializeObject
للكائنات البسيطة، إلا أن JObject.FromObject
توفر مرونة أكبر في السيناريوهات المعقدة. يمكنك بسهولة إضافة أو إزالة أو تعديل الخصائص داخل JObject
قبل التحويل النهائي.
الخلاصة: بالنسبة لتطوير C# الحديث، يُوصى بشدة بطريقتي JsonConvert.SerializeObject
و JObject.FromObject
من Newtonsoft.Json نظرًا لأدائهما وميزاتهما ومرونتهما. تذكر تثبيت حزمة NuGet Newtonsoft.Json
.