System.Text.Json ile JSON (isteğe bağlı etkinleştirme ve dönüştürücüler)
C# 6 uyumlu JSON kullanımı: [DataContract]/[DataMember] ile (üyeleri isteğe bağlı etkinleştirerek) DataContractJsonSerializer kullanın ve dönüştürücülere benzer basit adlandırma değişiklikleri yapın.
System.Text.Json ile JSON (isteğe bağlı etkinleştirme ve dönüştürücüler), CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 3 dersten oluşur.
C# 6'da JSON: plan
Amaç: Harici paketler olmadan JSON'u serileştirmek ve serileştirmeyi geri almak.
- DataContractJsonSerializer kullanın
- Üyeleri DataMember aracılığıyla seçerek dahil edin
- Adları Name= ile özelleştirin
- Dosyalara güvenli biçimde yazıp dosyalardan güvenli biçimde okuyun
Seçerek dahil etme modeli
Seçerek dahil etme modeli: Türü DataContract ile ve yalnızca dahil edilen üyeleri DataMember ile işaretleyin. JSON anahtarlarını denetlemek için Name= kullanın.
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'a serileştirme
Bir DataContractJsonSerializer oluşturun, bir akışa yazın ve UTF-8 ile bir dizeye kodlayın.
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'dan serileştirmeyi geri alma
Bir akıştan okuyarak serileştirmeyi geri alın. Yalnızca DataMember alanları doldurulur.
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 dosyalarını kaydetme ve yükleme
JSON'u using blokları içinde FileStream ile kalıcı hâle getirin. Bu, gerçek uygulamalardaki ayarlar ve küçük veriler gibi kullanım biçimlerini yansıtır.
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);
}
}
Adlandırma ve basit dönüşümler
Özelleştirme:
- Özellik adlarını eşlemek için DataMember içinde Name= kullanın (ör. user_name)
- Sıralamalar için her değeri EnumMember ile işaretleyin
- Özel biçimler (tarihler, sayılar) için C# 6'da bir dize özelliğine dönüştürün (elle eşleme)
JSON için seçerek dahil etme kuralı
Özet
Özet: C# 6'da DataContractJsonSerializer kullanın, üyeleri DataMember ile seçerek dahil edin, adları Name= aracılığıyla ayarlayın ve güvenli akış kalıplarıyla okuyup yazın.
Yapay zeka eğitmeniyle C# öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 93
- Dersler
- 346
Sıkça Sorulan Sorular
“System.Text.Json ile JSON (isteğe bağlı etkinleştirme ve dönüştürücüler)” dersi ücretsiz mi?
Evet — “System.Text.Json ile JSON (isteğe bağlı etkinleştirme ve dönüştürücüler)” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 3 dersten oluşur.
“System.Text.Json ile JSON (isteğe bağlı etkinleştirme ve dönüştürücüler)” dersinde ne öğreneceğim?
C# 6 uyumlu JSON kullanımı: [DataContract]/[DataMember] ile (üyeleri isteğe bağlı etkinleştirerek) DataContractJsonSerializer kullanın ve dönüştürücülere benzer basit adlandırma değişiklikleri yapın. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 2. dersidir.
“System.Text.Json ile JSON (isteğe bağlı etkinleştirme ve dönüştürücüler)” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- System.IO (yollar ve akışlar)
- System.Text.Json ile JSON (isteğe bağlı etkinleştirme ve dönüştürücüler)
- Basit CSV ayrıştırma kalıpları