C# Programming

تحليل JSON بكفاءة في C#

Spread the love

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

محتويات

تحليل JSON باستخدام JsonConvert.DeserializeObject()

تُعد مكتبة Newtonsoft.Json مكتبة JSON مستخدمة على نطاق واسع وعالية الأداء لـ .NET. وهي توفر طريقة JsonConvert.DeserializeObject() لتحليل JSON بكفاءة. ستحتاج إلى تثبيتها عبر مدير حزم NuGet (“Newtonsoft.Json”).


using Newtonsoft.Json;

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

public class Example
{
    public static void Main(string[] args)
    {
        string jsonString = @"{
            ""Name"": ""John Doe"",
            ""Age"": 30,
            ""City"": ""New York""
        }";

        Person person = JsonConvert.DeserializeObject<Person>(jsonString);

        Console.WriteLine($"Name: {person.Name}");
        Console.WriteLine($"Age: {person.Age}");
        Console.WriteLine($"City: {person.City}");
    }
}

يقوم هذا الكود بتعريف فئة Person مطابقة لهيكل JSON. JsonConvert.DeserializeObject<Person>(jsonString) يقوم بإلغاء تسلسل JSON إلى كائن Person، مما يسمح بالوصول السهل إلى خصائصه. هذا هو النهج الأكثر كفاءة وغنى بالمميزات بشكل عام.

تحليل JSON الديناميكي باستخدام JObject.Parse()

باستخدام Newtonsoft.Json أيضًا، توفر طريقة JObject.Parse() تحليلًا ديناميكيًا. هذا مفيد عندما يكون هيكل JSON غير معروف أو يتطلب وصولًا مرنًا إلى الخصائص.


using Newtonsoft.Json.Linq;

public class Example
{
    public static void Main(string[] args)
    {
        string jsonString = @"{
            ""Name"": ""Jane Doe"",
            ""Age"": 25,
            ""City"": ""London"",
            ""Address"": {
                ""Street"": ""123 Main St"",
                ""Zip"": ""10001""
            }
        }";

        JObject jObject = JObject.Parse(jsonString);

        string name = (string)jObject["Name"];
        int age = (int)jObject["Age"];
        string city = (string)jObject["City"];
        string street = (string)jObject["Address"]["Street"];

        Console.WriteLine($"Name: {name}");
        Console.WriteLine($"Age: {age}");
        Console.WriteLine($"City: {city}");
        Console.WriteLine($"Street: {street}");
    }
}

يقوم JObject.Parse() بإنشاء JObject. يتم الوصول إلى الخصائص باستخدام مؤشرات، مما يسمح بالوصول إلى الكائنات المتداخلة. يعتبر التحويل الصريح للنوع أمرًا بالغ الأهمية لاسترجاع القيم بشكل صحيح.

استخدام JavaScriptSerializer().Deserialize()

يوفر JavaScriptSerializer المدمج (System.Web.Script.Serialization) بديلًا أبسط. ومع ذلك، فهو أقل كفاءة بشكل عام من Newtonsoft.Json وله عدد أقل من الميزات. تم تضمينه من أجل الإتمام، ولكن يجب تجنبه في تطبيقات الإنتاج.


using System.Web.Script.Serialization;

public class Example
{
    public static void Main(string[] args)
    {
        string jsonString = @"{
            ""Name"": ""Peter Jones"",
            ""Age"": 40,
            ""City"": ""Paris""
        }";

        JavaScriptSerializer serializer = new JavaScriptSerializer();
        Person person = serializer.Deserialize<Person>(jsonString);

        Console.WriteLine($"Name: {person.Name}");
        Console.WriteLine($"Age: {person.Age}");
        Console.WriteLine($"City: {person.City}");
    }
}

يستخدم هذا JavaScriptSerializer.Deserialize<Person>(). لاحظ أنك قد تحتاج إلى إضافة مرجع إلى System.Web.Extensions اعتمادًا على مشروعك.

باختصار، يُوصى باستخدام JsonConvert.DeserializeObject() من Newtonsoft.Json لأدائه وميزاته. يوفر JObject.Parse() المرونة، بينما يوفر JavaScriptSerializer() بديلاً أساسيًا. اختر الطريقة الأنسب لاحتياجاتك. تعامل دائمًا مع الاستثناءات المحتملة (مثل JsonReaderException) في رمز الإنتاج.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *