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
- JObject.Parse() ile Dinamik JSON Ayrıştırma
- JavaScriptSerializer().Deserialize() Kullanımı
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.