C# Programming

C# da Verimli JSON Çözümlemesi

Spread the love

JSON (JavaScript Nesne Gösterimi), web uygulamalarında yaygın olarak kullanılan hafif bir veri alışverişi biçimidir. C#, JSON verilerini verimli bir şekilde ayrıştırmanın çeşitli yollarını sağlayarak, web API’leri ve diğer JSON tabanlı sistemlerle entegrasyonu basitleştirir. Bu makale, üç popüler yöntemi inceleyerek güçlü ve zayıf yönlerini vurgular.

İçerik Tablosu

JsonConvert.DeserializeObject() ile JSON Ayrıştırma

.NET için yaygın olarak kullanılan ve yüksek performanslı bir JSON kütüphanesi olan Newtonsoft.Json kütüphanesi, verimli JSON ayrıştırma için JsonConvert.DeserializeObject() metodunu sunar. NuGet Paket Yöneticisi aracılığıyla (“Newtonsoft.Json”) yüklemeniz gerekecektir.


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}");
    }
}

Bu kod, JSON yapısıyla eşleşen bir Person sınıfı tanımlar. JsonConvert.DeserializeObject<Person>(jsonString), JSON’ı bir Person nesnesine ayrıştırır ve özelliklerine kolay erişim sağlar. Bu genellikle en verimli ve özellik açısından zengin yaklaşımdır.

JObject.Parse() ile Dinamik JSON Ayrıştırma

Newtonsoft.Json‘ı da kullanan JObject.Parse() metodu, dinamik ayrıştırma sağlar. Bu, JSON yapısı bilinmediğinde veya esnek özellik erişimi gerektirdiğinde faydalıdır.


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() bir JObject oluşturur. Özelliklere indeksleyiciler kullanılarak erişilir ve iç içe geçmiş nesnelere erişim sağlanır. Değerleri doğru bir şekilde almak için tür dönüştürme çok önemlidir.

JavaScriptSerializer().Deserialize() Kullanımı

Yerleşik JavaScriptSerializer (System.Web.Script.Serialization), daha basit bir alternatif sunar. Bununla birlikte, genellikle Newtonsoft.Json‘dan daha az verimlidir ve daha az özelliğe sahiptir. Tamamlamak için dahil edilmiştir, ancak üretim uygulamalarında kullanılmamalıdır.


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}");
    }
}

Bu, JavaScriptSerializer.Deserialize<Person>() kullanır. Projenize bağlı olarak System.Web.Extensions‘a bir referans eklemeniz gerekebilir.

Özetle, performansı ve özellikleri nedeniyle Newtonsoft.Json‘ın JsonConvert.DeserializeObject() yöntemi önerilir. JObject.Parse() esneklik sunarken, JavaScriptSerializer() temel bir alternatif sağlar. İhtiyaçlarınıza en uygun yöntemi seçin. Üretim kodunda potansiyel istisnaları (JsonReaderException gibi) her zaman ele alın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir